我想弄清楚红宝石中减法块的最佳方式,如果结果小于1
,结果默认为1
。在红宝石减法不小于1
我尝试了三元运算符,但0
结果为真明显:
(2 - 2) ? (2 - 2) : 1
是否有表达4 - 2 = 2
,2 - 2 = 1
和3 - 2 = 1
一个简洁的方式?
我想弄清楚红宝石中减法块的最佳方式,如果结果小于1
,结果默认为1
。在红宝石减法不小于1
我尝试了三元运算符,但0
结果为真明显:
(2 - 2) ? (2 - 2) : 1
是否有表达4 - 2 = 2
,2 - 2 = 1
和3 - 2 = 1
一个简洁的方式?
您可以使用Enumerable#max
:
def special_substraction(a, b)
[a - b, 1].max
end
special_substraction(4, 2)
#=> 2
special_substraction(2, 2)
#=> 1
special_substraction(3, 2)
#=> 1
附:
我尝试了三元运算符,但
0
结果为真明显:
在Ruby中的一切期待nil
和false
被认为是truthy。
'[a - b,1] .max' :) –
@SergioTulentsev为什么你这么酷?完美的一个。我可以使用它还是将它添加为答案? :P –
当然,接受它:) –
在Ruby *中,只有*'nil'和'false'在逻辑上是错误的。其他的一切,空字符串,零,一个空数组,它们都被认为是逻辑真实的。 – tadman