有时候,我会看到如下代码:
var foo = lam@(x: int): int => ...
lam@
的含义是什么? lam
和lam@
之间有什么区别?
答案 0 :(得分:2)
在内存方面,lam
创建一个盒装闭包(如果它是一个闭包),并在堆上分配它。 lam@
创建一个平面闭包,并将其分配到堆栈框架上。
请参阅官方教程中的Chapter 26. Linear Closure-Functions 和Chapter 27. Stack-Allocated Closure-Functions以供参考。