Sła*_*ski 4 syntax function julia
在Julia中,我知道有三种定义命名多线函数的方法:
1.
function f(x, y)
...
end
Run Code Online (Sandbox Code Playgroud)
2.
f = function(x, y)
...
end
Run Code Online (Sandbox Code Playgroud)
3.
f(x, y) = begin
...
end
Run Code Online (Sandbox Code Playgroud)
它们似乎都产生了相同的结果.
有什么区别吗?应该使用哪一个?为什么?
图1和3在功能上是相同的,但在风格上是优选的."短格式函数声明" f(x,y) = …通常用于(并鼓励)用于单行定义 - 即没有begin块.
2是不同的.它正在创建一个匿名函数,然后将其分配给f.请注意,与1和3创建的绑定不同,您实际上可以重新分配 f给完全不同的东西.这意味着Julia不能假设f总是会调用该函数,这意味着它不能进行任何正常的优化.现在,如果您使用了const f = function(x, y) …,那么它f是一个常量绑定,它应该与其他声明的行为类似.但请注意,这f仍然只是对匿名函数的绑定 - 函数本身并不知道它的名字是什么!因此它将打印#1 (generic function with 1 method)而不是f (generic function with 1 method).
有关详细信息,请参阅https://docs.julialang.org/en/stable/manual/functions/.