Оператор присваивания в f # - PullRequest
4 голосов
/ 04 апреля 2011

Я видел и в ruby-программировании PowerShell, мы можем назначать переменные типа a, b = b, a . это на самом деле меняет переменную.

Возможно ли это в f #, если да, пожалуйста, приведите мне ссылку

1 Ответ

13 голосов
/ 04 апреля 2011

Как правило, F # не допускает переназначения переменных.Скорее, он поддерживает неизменяемые именованные значения через привязки let.Таким образом, следующее невозможно:

let a = 3
a = 4

Если вы явно не пометите a как mutable:

let mutable a = 3
a <- 4

Однако F # в большинстве случаев допускает переменную "затенение",Единственным ограничением является то, что это не может быть сделано на модулях верхнего уровня.Но, например, внутри функции прекрасно работает:

let f () =
    let a,b = 1,2
    let a,b = b,a //"swap"
    a,b
...