MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   可以在编程语言的命令行窗口中定义功能? (https://www.labfans.com/bbs/showthread.php?t=24145)

poster 2019-12-10 20:48

可以在编程语言的命令行窗口中定义功能?
 
是否可以在Matlab的命令行窗口中定义函数?在我看来不。

但是对于R,可以这样做。我想知道为什么存在这种差异,并且在编程语言的这种功能背后是否还有更多要说的,还是我只能说解释性语言(例如Python,Bash等)?

谢谢!



[B]回答:[/B]

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

例如,我复制[URL="https://stackoverflow.com/questions/4251553/possible-to-define-a-function-in-commandline-window-of-a-programming-language/4251713#4251713"]@Dirk Eddelbuettel[/URL]的函数

>> cubed = @(x)x^3; >> cubed(2) ans = 8 [B]编辑1[/B]请注意,您只能在Matlab中将单语句函数定义为匿名函数,因此不能使用例如for循环(除非您使用evil eval ,它允许所有操作)。但是,如果嵌套匿名函数,则可以创建任意复杂的递归语句。因此,我想您确实可以在命令行窗口中定义任何函数。这可能不值得付出努力,我敢打赌,这将很难理解。

[B]编辑2[/B]这是一个递归嵌套匿名函数的示例,用于从[URL="http://www.mathworks.com/matlabcentral/newsreader/view_thread/246185"]Matlab[/URL] Central计算阶乘:

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

[url=https://stackoverflow.com/questions/4251553]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 01:03

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.