【发布时间】:2014-03-25 06:37:27
【问题描述】:
一些关于运算符优先级like this 的信息源表明,像!、~、+、- 这样的一元运算符的优先级高于赋值=。但是,以下表达式是可能的:
!a = true # => false (with warning)
a # => true
~a = 1 # => -2
a # => 1
+a = 1 # => 1
a # => 1
-a = 1 # => -1
a # => 1
考虑到这些结果,我能想到的唯一可能的解释是这些一元运算符的优先级低于赋值。如果是这样,那就意味着我上面提到的信息是错误的。哪个是对的?有不同的解释吗?
【问题讨论】:
-
很有趣,但这种行为非常有意义,因为在赋值之前将一元运算符应用于左值将无效。当然,文档应该解决这个问题。
-
@CarySwoveland 你是对的..
-
为了清楚起见,
~a = 1似乎表现得像~(a = 1)。
标签: ruby variable-assignment operator-precedence unary-operator