我刚刚开始使用 F# 并且有一个基本问题。
这是代码:
let rec forLoop body times =
if times <= 0 then
()
else
body()
forLoop body (times - 1)
我不明白当你定义一个变量时它是一个值和不可变的概念。在这里,值正在改变以便循环。这与 C# 中的变量有何不同?
最佳答案
它没有改变。你使用递归。 那变量保持不变,但减一并传递给函数。在这种情况下,功能是相同的。
堆栈看起来像
forLoop body 0
|
forLoop body 1
|
forLoop body 2
关于f# - F# 中的不可变值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623971/