2024-06-01 00:21:48 发布
网友
是否可以在Matlab的命令行窗口中定义函数?在我看来不是。在
但对R来说,这是可能的。我想知道为什么会有这种区别,在编程语言的这种特性背后是否还有更多的话要说,或者我可以说只是解释性语言(比如Python、Bash等等)?在
谢谢!在
您可以在Matlab的命令窗口中定义函数。它将像函数一样进行计算,但在下一个Matlab会话中它将不可用(尽管您可以像变量一样保存和加载它)。在
作为一个例子,我复制了@Dirk Eddelbuettel的函数
>> cubed = @(x)x^3; >> cubed(2) ans = 8
编辑1 注意,在Matlab中,您只能将单语句函数定义为匿名函数,因此不能使用例如for循环(除非您使用evileval,它允许一切)。但是,如果嵌套匿名函数,则可以创建任意复杂的递归语句。因此,我想您确实可以在命令行窗口中定义任何函数。这可能不值得付出努力,我敢打赌这将是非常难以理解的。在
eval
编辑2下面是一个递归嵌套匿名函数的示例,用于从Matlab central计算阶乘:
这并不是一种编程语言的特性,而是一种编程语言的实现。例如,存在C解释器和Lisp编译器。这通常称为REPL(Read Eval Print Loop),通常是解释实现的一个特性。在
是的,如果手头的语言支持它。下面是一个简单的R示例,在我使用的命令提示符下剪切和粘贴:
R> cubed <- function(x) x^3 R> cubed(2) [1] 8 R> cubed(3) [1] 27 R>
您可以在Matlab的命令窗口中定义函数。它将像函数一样进行计算,但在下一个Matlab会话中它将不可用(尽管您可以像变量一样保存和加载它)。在
作为一个例子,我复制了@Dirk Eddelbuettel的函数
编辑1 注意,在Matlab中,您只能将单语句函数定义为匿名函数,因此不能使用例如for循环(除非您使用evil
eval
,它允许一切)。但是,如果嵌套匿名函数,则可以创建任意复杂的递归语句。因此,我想您确实可以在命令行窗口中定义任何函数。这可能不值得付出努力,我敢打赌这将是非常难以理解的。在编辑2下面是一个递归嵌套匿名函数的示例,用于从Matlab central计算阶乘:
^{pr2}$这并不是一种编程语言的特性,而是一种编程语言的实现。例如,存在C解释器和Lisp编译器。这通常称为REPL(Read Eval Print Loop),通常是解释实现的一个特性。在
是的,如果手头的语言支持它。下面是一个简单的R示例,在我使用的命令提示符下剪切和粘贴:
相关问题 更多 >
编程相关推荐