我正在做的事情:
result = (not question?) \
and ( \
condition \
or ( \
comparer == compared and another_question? \
) \
)
Run Code Online (Sandbox Code Playgroud)
目标是具有复杂和/或逻辑,并且仍然具有可读性.
上面尝试语法的问题在于它是如何在ruby的解析器中弄乱括号,所以控制台说错误在这个代码不在的文件中.(虽然它在调用堆栈中)
没有反斜杠,我得到这些:
syntax error, unexpected kAND, expecting kEND (SyntaxError)
Run Code Online (Sandbox Code Playgroud)
和
syntax error, unexpected kOR, expecting ')'
Run Code Online (Sandbox Code Playgroud)
关于如何正确地做到这一点的任何想法?
out*_*tis 18
在反斜杠后删除空格another_question? \.您正在转义空间而不是换行符,这会导致语法错误.
请注意,您不需要转义每个换行符.
result = (not question?) \
and (
condition \
or (
comparer == compared and another_question?
)
)
Run Code Online (Sandbox Code Playgroud)
确保每一行(除了最后一行)以一个运算符结束,因此解释器"知道"将会有更多的操作数,例如
result = (not question?) and (
condition or
(comparer == compared and another_question?)
)
Run Code Online (Sandbox Code Playgroud)
(用MRI 1.8.7测试)
试试这个:
sub = (comparer == compared and another_question?)
result = (not question?) and (condition or sub)
Run Code Online (Sandbox Code Playgroud)
不需要把整个事情做成一个表达.