在 Julia 中,这两种创建函数的方法之间有什么区别吗:
function g1(x)
# compute something, store it in `result`
return result
end
和
g2(x) = let
# compute something, store it in `result`
result
end
请注意,
let
变体也会创建一个函数。因此你也可以写:
g2(x) = begin
# compute something, store it in `result`
result
end
获得相同的效果。
原因是这里
=
之后的所有内容都在g2
函数范围内,所以无论你执行begin
-end
还是let
-end
,表达式都在这个范围内。 let
变体创建了一个额外的硬范围,但它不会改变任何内容,因为函数范围中没有任何内容不在示例中的 let
范围内。
如果它在全局范围内, let
-end
会与 begin
-end
有所不同,但在你的情况下,你在函数范围内引入它。