在C#中有类似的代码
int someVariable=10;
--someVariable; //what is the meaning?
在F#怎么样?我可以用C#代码吗?
答案 0 :(得分:3)
与 someVariable = someVariable - 1 意味着相同。
结果将是10 - 1或9。
答案 1 :(得分:2)
其他人在C#中解释了--
运算符。因为F#是一种默认提倡不变性的函数式编程语言,所以没有内置的运算符可以做同样的事情。您必须使用mutable
值明确地编写它:
let mutable someVariable = 10
someVariable <- someVariable - 1
由于用户使用mutable
关键字了解可变性,因此可以避免一些错误,例如由C#中的前缀和后缀--
运算符的隐藏副作用引起的错误。
正如@Daniel在评论中所说,你也可以使用reference cell和decr功能来达到同样的目的。
答案 2 :(得分:1)
--
运算符在变量返回值之前,变量将值减1。在变量之后,它获取值然后递减。所以
int i = 2;
((--i) == 2) # false
,i
的值为1之后。
int i = 2;
((i--) == 2) # true
并且i
的值仍然是1之后。
我不认为F#有它。
答案 3 :(得分:0)
澄清一下, - someVariable的含义是:
(someVariable=someVariable-1;return someVariable)
而不是someVariable--,这意味着:
(return someVariable; someVariable=someVariable-1)
(虽然它没有效果,但给你的想法);
有等效的前缀和后缀++运算符。实际上,postfix ++运算符是最常用的,尽管了解其他运算符很重要。
最后的双重冒号是错误的,但不是无效的。看起来有人在其他地方复制了表单,或习惯用其他语言写作。