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

ruby – “OR”运算符必须放在上一行的末尾? (意外的torop)

发布时间:2020-12-16 22:23:23 所属栏目:百科 来源:网络整理
导读:我正在运行 Ruby 1.9. 这是一个有效的语法: items = (data['DELETE'] || data['delete'] || data['GET'] || data['get'] || data['POST'] || data['post']) 但这给我一个错误: items = (data['DELETE'] || data['delete'] || data['GET'] || data['get'] |
我正在运行 Ruby 1.9.

这是一个有效的语法:

items = (data['DELETE'] || data['delete'] ||
         data['GET'] || data['get'] || data['POST'] || data['post'])

但这给我一个错误:

items = (data['DELETE'] || data['delete']
         || data['GET'] || data['get'] || data['POST'] || data['post'])

t.rb:8: syntax error,unexpected tOROP,expecting ')'
         || data['GET'] || data['get'] |...
           ^

为什么?!

解决方法

我可以说的是“这就是它的工作原理”.

一般来说,Ruby解析器做出了惊人的工作,可以弄清楚表达式是否需要在另一行上继续.关于这个世界上所有其他的语言,都完全可以解决这个问题,并且需要一个实际的字符来继续下一行或终止语句.

如你所知,Ruby是特别的,几乎总是,它只是想出来.

在这种情况下,虽然存在冲突.解析器知道您的表达式尚未完成,因为它仍在寻找),但它可以是复合表达式.

例如,你可以这样写:

(p :a; p :b; p :c)

…但使用换行软终端器而不是; …以下语法确实可以正常工作:

(p :a
 p :b
 p :c)

(BTW,该表达式的值是序列中最后一个表达式的值.)

Ruby不能解析您的语句和上述语句,而不需要更好的提示,例如明确要求另一行的二进制运算符.

(编辑:李大同)

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

    推荐文章
      热点阅读