可以在编程语言的命令行窗口中定义一个函数吗?

时间:2010-11-23 00:14:15

标签: python bash r matlab

是否可以在Matlab的命令行窗口中定义一个函数?看起来不对我。

但是对于R来说,有可能这样做。我想知道为什么存在这种差异,如果有更多的话要说这种编程语言的特性,或者我可以说只是解释性语言(例如Python,Bash,......)?

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以在Matlab的命令窗口中定义函数。它将像函数一样进行评估,但在下一个Matlab会话中将无法使用它(尽管您可以像变量一样保存和加载它)。

例如,我复制@Dirk Eddelbuettel的功能

>> cubed = @(x)x^3;
>> cubed(2)
ans =
     8

编辑1 请注意,您只能在Matlab中将单语句函数定义为匿名函数,因此您不能使用例如for循环(除非你使用邪恶的eval,它允许一切)。但是,如果嵌套匿名函数,则可以创建任意复杂的递归语句。因此,我猜你确实可以在命令行窗口中定义任何函数。这可能不值得付出努力,我打赌这很难理解。

EDIT 2 以下是一个递归嵌套匿名函数的示例,用于计算来自Matlab central的阶乘:

>> fact = @(val,branchFcns) val*branchFcns{(val <= 1)+1}(val-1,branchFcns);
>> returnOne = @(val,branchFcns) 1;
>> branchFcns = {fact returnOne};
>> fact(4,branchFcns)
ans =
    24
>> fact(5,branchFcns)
ans =
   120

答案 1 :(得分:2)

这不是编程语言的一个特性,而是该编程语言的实现。例如,存在C解释器和Lisp编译器。这通常称为REPL(Read-Eval-Print-Loop),通常是解释实现的一个特征。

答案 2 :(得分:1)

是的,如果当前的语言支持它。所以这是一个简单的R示例,从我正在使用的命令提示符剪切和粘贴:

R> cubed <- function(x) x^3
R> cubed(2)
[1] 8
R> cubed(3)
[1] 27
R>