什么是" - "在C#中意味着什么,在F#中呢?

时间:2012-02-04 18:08:13

标签: c# f#

在C#中有类似的代码

int someVariable=10;
--someVariable; //what is the meaning?

在F#怎么样?我可以用C#代码吗?

4 个答案:

答案 0 :(得分:3)

someVariable = someVariable - 1 意味着相同。

结果将是10 - 1或9。

答案 1 :(得分:2)

其他人在C#中解释了--运算符。因为F#是一种默认提倡不变性的函数式编程语言,所以没有内置的运算符可以做同样的事情。您必须使用mutable值明确地编写它:

let mutable someVariable = 10
someVariable <- someVariable - 1

由于用户使用mutable关键字了解可变性,因此可以避免一些错误,例如由C#中的前缀和后缀--运算符的隐藏副作用引起的错误。

正如@Daniel在评论中所说,你也可以使用reference celldecr功能来达到同样的目的。

答案 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 ++运算符是最常用的,尽管了解其他运算符很重要。

最后的双重冒号是错误的,但不是无效的。看起来有人在其他地方复制了表单,或习惯用其他语言写作。