我从F#开始,有些代码结构令我惊讶。例如:
我有下一个代码:
let mutable s = 10
s <- 1 + s
printf "%i" s
Run Code Online (Sandbox Code Playgroud)
从数学的角度来看,一切都是清楚的。我将“ s”标记为可变的,并将新值分配给“ s”。结果是11。
让我尝试代码的其他部分:
let mutable s = 10
s = 1 + s
printf "%i" s
Run Code Online (Sandbox Code Playgroud)
此代码已工作。但是我s = 1 + s从数学角度看这有点奇怪。执行结果为10。
我的问题是,上一个样本中发生了什么?为什么我没有收到错误消息?是s = 1 + s不理?为什么?我的输出没有任何错误。
代码
s=1+s
Run Code Online (Sandbox Code Playgroud)
将不会修改s-等效的C#是
s==1+s
Run Code Online (Sandbox Code Playgroud)
刚刚返回 false
实际上,编译器应该已经在该行上发出了有关未使用值的警告。
该=运营商只是做一个平等的检查-它并没有指定任何值。
| 归档时间: |
|
| 查看次数: |
839 次 |
| 最近记录: |