Ruby: One-Line If-Then-Else
本问题已经有最佳答案,请猛点这里访问。
我想知道Ruby中是否有一种方法可以用单词作为操作符,以类似于Python的方式编写一行if-then-else语句
1 | a if b else c |
我知道经典的三元条件,但我觉得Ruby更多的是一种"wordsey"语言,而不是一种"symboley"语言,所以我试图更好地封装语言的精神。
我也知道这种方法,
1 | if a then b else c end |
这基本上是把一个多衬板挤到一条线上,但线的末端的
所以对于你这些很了解鲁比的人来说,有没有更好的方法来写这个?如果不是,哪种方法是最鲁莽的?
以下问题未通过链接邮件解决:
存在的两个一行程序是您已经描述的两个:
Ternary:
1 | a ? b : c |
如果结构:
1 | if a then b else c end |
所以要回答你的问题:
然而,所有大多数样式指南都说三元运算符对于简单的构造都是很好的:
1 | Avoid the ternary operator (?:) except in cases where all expressions are extremely trivial. |
Ruby非常灵活,通常用于创建特定于域的语言(DSL),虽然这个示例实际上不是DSL,但您可以使用它在对象类上创建更具表现力的三元方法。
1 2 3 4 5 6 7 8 | def the_value(val, as_long_as:, otherwise:) as_long_as ? val : otherwise end some_thing = the_value 4, as_long_as: 1 > 0, otherwise: 5 => 4 some_thing = the_value 4, as_long_as: 1 < 0, otherwise: 5 => 5 |
您可以更改方法名和参数以适应您喜欢的任何上下文。
PS:假设Ruby版本大于等于2.1