我想要做的是:
result = (not question?) \
and ( \
condition \
or ( \
comparer == compared and another_question? \
) \
)
目标是具有复杂的and /或逻辑,并且仍然具有可读性。
上面尝试的语法的问题是它在ruby的解析器中弄乱了括号,所以控制台说错误是在一个文件中,而这个代码不在这个文件中。(尽管它在调用堆栈中)
去掉反斜杠,我得到以下结果:
syntax error, unexpected kAND, expecting kEND (SyntaxError)
和
syntax error, unexpected kOR, expecting ')'
有没有关于如何正确做到这一点的想法?
发布于 2011-08-27 06:29:29
删除another_question? \
中反斜杠后面的空格。您转义的是空格而不是换行符,这会导致语法错误。
注意:你不需要转义每个换行符。
result = (not question?) \
and (
condition \
or (
comparer == compared and another_question?
)
)
发布于 2013-11-16 01:25:45
对于逻辑表达式,应使用&&
、||
、!
,而不是and
、or
、not
。
and
、or
、not
只能用于控制流。
一个原因是&&
,||
,!
比and
,or
,not
具有更高的优先级。
在this blog post上阅读更多关于这方面的内容。
发布于 2011-08-27 06:14:19
确保每一行(除了最后一行)都以一个运算符结尾,这样解释器就“知道”会有更多的操作数到来,例如
result = (not question?) and (
condition or
(comparer == compared and another_question?)
)
(使用MRI 1.8.7进行测试)
https://stackoverflow.com/questions/7210794
复制相似问题