加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 一元运算符的运算符优先级

发布时间:2020-12-16 19:10:17 所属栏目:百科 来源:网络整理
导读:关于运算符优先级 like this的一些信息源说,像!,?,– 这样的一元运算符具有比赋值=更高的优先级.但是,以下表达式是可能的: !a = true # = false (with warning)a # = true~a = 1 # = -2a # = 1+a = 1 # = 1a # = 1-a = 1 # = -1a # = 1 考虑到这些结果,我
关于运算符优先级 like this的一些信息源说,像!,?,– 这样的一元运算符具有比赋值=更高的优先级.但是,以下表达式是可能的:
!a = true # => false (with warning)
a         # => true

~a = 1    # => -2
a         # => 1

+a = 1    # => 1
a         # => 1

-a = 1    # => -1
a         # => 1

考虑到这些结果,我能想到的唯一可能的解释是这些一元运算符的优先级低于赋值.如果是这种情况,则意味着我上面提到的信息是错误的.哪个是对的?有不同的解释吗?

解决方法

我的编程ruby书(第2版)还列出了一元运算符具有比赋值更高的优先级.

一元运算符被赋予最高优先级.将行解析为?(a = 1)的原因是因为将行分解为有效语法的优先级高于其他任何内容,包括使用简单变量“a”作为一元运算符操作的表达式.

如果ruby解析器可以使该行的其余部分有效,那么它将使用(~a),但是没有有效的规则而不是matches = something,只有lvalue’=’rvalue.

您可以将“有效语法”视为最高优先级,然后是简单值,常量和变量名称,然后是其下的标准运算符.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读