一千萬個為什麽

搜索

F#中的不可變值

我剛剛開始使用F#並且有一個基本的問題。

這是代碼:

let rec forLoop body times =
    if times <= 0 then
        ()
    else
        body()
        forLoop body (times - 1)

我沒有得到如何定義變量它是一個值和不可變的概念。這裏,值正在變化以循環。這與C#中的變量有什麽不同?

最佳答案

所呈現的代碼不會在C#中表示為for循環,它將是遞歸的(類似這樣):

void ForLoop(int times, Action body)
{
  if (times <= 0)
  {
     return;
  }
  else
  {
     body();
     ForLoop(times - 1, body);
  }
}

如您所見, times 的值在任何時候都不會更改。

轉載註明原文: F#中的不可變值