Ruby多行三进制表达式?

5vf7fwbs  于 2022-11-04  发布在  Ruby
关注(0)|答案(4)|浏览(193)

我正在尝试转换这样的东西:

if condition?
   expression1 line 1
   expression1 line 2
   expression1 line 3
else 
   expression2 line 1
end

对于三元,我问题是:如何在一行中将多行放入一个表达式?2是否像java中那样用分号分隔?3像这样?

condition? expression1 line 1; expression1 line 2; expression1 line 3 : expression2
raogr8fs

raogr8fs1#

In Ruby, it is always possible to replace newlines with semicolons, so you can, in fact, write your entire program in one single long giant line. Whether or not that is good for readability and maintainability, I will leave that up to you. (Note: you will sometimes have to insert parentheses for grouping in case of precedence mismatch.) Here is how you can write your conditional expression in a single line: if condition? then expression1 line 1; expression1 line 2; expression1 line 3 else expression2 line 1 end
ubby3x7f

ubby3x7f2#

您可以在多行上表示三元:

condition ?
  expression 1 :
  expression 2

是的,你需要在多个表达式中使用分号(括号也无妨)。
Please don't do this, per rubocop style.坚持使用单行或if块。

hs1ihplo

hs1ihplo3#

您应该将表达式括在括号中:

condition ? (expression1 line 1; expression1 line 2; expression1 line 3) : expression2

你应该记住,这会降低代码的可读性。你可能最好使用if/else语句来提高可读性。当我回顾我的ruby代码时,我喜欢使用community style guide。正如它在介绍段落中所说的:
本Ruby风格指南推荐了一些最佳实践,以便真实的Ruby程序员能够编写出可由其他真实的Ruby程序员维护的代码。
希望这对你有帮助

2jcobegt

2jcobegt4#

三元运算符需要一个指令块。这意味着您可以使用括号将指令分组

condition = true
condition ? (puts("this"); puts("is"); puts("true")) : puts("this is false")

或者在开始/结束块中。

condition = true
condition ? begin puts("this"); puts("is"); puts("true") end : puts("this is false")

没有简单明了的方法来获得结果,这一事实应该告诉您三元运算符并不是真正为多个语句设计的。)
在这种情况下不要尝试使用它。使用标准if/else。

相关问题