是否有修饰符可以放在函数声明上以强制它不是闭包?我希望以下内容不要通过对 inner
的这种假定修改进行编译:
let outer() =
let i = 7
let inner() =
printf "%i" i
inner()
但是提示i
没有定义。这样做的原因是安全性——我想确保我没有捕获并可能修改任何我不打算捕获的东西,以及闭包与函数的性能。
最佳答案
除了将函数移动到范围内没有任何内容可捕获的位置之外,没有其他方法可以实现此目的。话虽如此,在您给出的示例中,有一种简单的方法可以部分实现这一点:
let outer() =
let inner() =
printf "%i" i
let i = 7
inner()
关于f# - 是否可以强制嵌套函数定义不是闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24012435/