首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby:多行条件语法:我该怎么做?

Ruby:多行条件语法:我该怎么做?
EN

Stack Overflow用户
提问于 2011-08-27 05:35:31
回答 4查看 11.4K关注 0票数 16

我想要做的是:

代码语言:javascript
复制
result = (not question?) \
          and ( \
            condition \
            or ( \
              comparer == compared and another_question? \ 
            ) \
          )   

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

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

去掉反斜杠,我得到以下结果:

代码语言:javascript
复制
syntax error, unexpected kAND, expecting kEND (SyntaxError)

代码语言:javascript
复制
 syntax error, unexpected kOR, expecting ')'

有没有关于如何正确做到这一点的想法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-27 06:29:29

删除another_question? \中反斜杠后面的空格。您转义的是空格而不是换行符,这会导致语法错误。

注意:你不需要转义每个换行符。

代码语言:javascript
复制
result = (not question?) \
          and (
            condition \
            or (
              comparer == compared and another_question?
            )
          ) 
票数 18
EN

Stack Overflow用户

发布于 2013-11-16 01:25:45

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

andornot只能用于控制流。

一个原因是&&||!andornot具有更高的优先级。

this blog post上阅读更多关于这方面的内容。

票数 11
EN

Stack Overflow用户

发布于 2011-08-27 06:14:19

确保每一行(除了最后一行)都以一个运算符结尾,这样解释器就“知道”会有更多的操作数到来,例如

代码语言:javascript
复制
result = (not question?) and (
                condition or
                (comparer == compared and another_question?)
         )

(使用MRI 1.8.7进行测试)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7210794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档