gpt4 book ai didi

ruby - "OR"运算符必须放在上一行的末尾? (意外的 TOROP)

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:18 24 4
gpt4 key购买 nike

我正在运行 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)

(顺便说一句,该表达式的值是序列中最后一个表达式的值。)

如果没有更好的提示(例如显然需要另一行的二元运算符),Ruby 无法同时解析您的语句和上述语句。

关于ruby - "OR"运算符必须放在上一行的末尾? (意外的 TOROP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com