f# - F# 中的不可变值

标签 f#

我刚刚开始使用 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/

相关文章:

F# 类型提供程序编译为 *.exe 文件

.net - TypeConverter 适用于 Newtonsoft.Json,但不适用于 JsonConverter? (F#)

f# - 部署 F# exe

multithreading - F# 同时在多个线程中更新列表

types - f# Narrow discriminated union in previous pattern matching guard(Control Flow Based Type Analysis)

c# - 如何使用 F# Interactive 以交互方式测试 C# 函数

.net - 什么是 Scala 的 Seq.Span 在 F# 中的等价物?

.net - System.Console.WriteLine() 与 F# 中的 printfn

f# - 按属性和类型反射(reflect)模块中的 let 绑定(bind)

c# - 跨 F#/C# 边界保留字段名称