是否有一个修饰符可以放在一个函数声明中,它会强制它不是一个闭包?我希望以下内容不要使用inner
:
let outer() =
let i = 7
let inner() =
printf "%i" i
inner()
但抱怨i
没有定义。这样做的原因是安全性 - 我希望确保我不会捕捉并且可能在我不打算做任何事情时,以及闭包与功能的表现。
答案 0 :(得分:3)
除了将功能移动到无法捕获范围的位置之外,无法实现此目的。话虽如此,在你给出的例子中有一个简单的方法可以部分实现这个目的:
let outer() =
let inner() =
printf "%i" i
let i = 7
inner()