我想知道Ruby中是否有一种方法可以使用单词作为运算符来编写一行if-then-else语句,方式类似于python'
a if b else c
我知道经典的三元条件,但我觉得Ruby更像是一个" wordsey"语言而不是" symboley"语言,所以我试图更好地封装语言的精神。
我也知道这个方法,
if a then b else c end
基本上将多线程压缩到一条线上,但线路末端的end
感觉很麻烦且多余。我认为三元条件比这更好。
所以对于那些熟悉Ruby的人来说,有更好的方法来写这个吗?如果没有,哪种方法最像Rubyesque?
链接帖子未解决以下问题:
if a then b else c end
更清晰的方式来写一个" wordsey" Ruby中的单行if-then-else?答案 0 :(得分:4)
存在的两个衬垫是您已经描述过的两个衬垫:
三元:
a ? b : c
如果-结构:
if a then b else c end
所以回答你的问题:
答案 1 :(得分:0)
Ruby非常灵活,通常用于创建特定于域的语言(DSL),虽然这个示例实际上不是DSL,但您可以使用它在对象类上创建更具表现力的三元方法。
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版本&gt; = 2.1