Ruby怎么实现多行条件语法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

我想做的是:

result = (not question?) \
          and ( \
            condition \
            or ( \
              comparer == compared and another_question? \ 
            ) \
          )   

其目标是具有复杂的和/或逻辑,并且仍然具有可读性。

上面尝试的语法的问题在于它是如何在ruby的解析器中搞砸括号的,所以控制台说错误在这个代码不在的文件中(尽管它在调用堆栈中)。

没有反斜线,我得到了这些:

syntax error, unexpected kAND, expecting kEND (SyntaxError)
 syntax error, unexpected kOR, expecting ')'

提问于
用户回答回答于

删除反斜杠后的空格another_question? \。你正在转义的是空间而不是新行,这会导致语法错误。

请注意,不需要转义每一个换行符。

result = (not question?) \
          and (
            condition \
            or (
              comparer == compared and another_question?
            )
          ) 
用户回答回答于

对于逻辑表达式,你应该使用&&||!,不andornot

andornot应该只被用于控制流。

原因之一是&&||!具有优先级高于andornot

扫码关注云+社区