2017-04-25 180 views
2

我想弄清楚红宝石中减法块的最佳方式,如果结果小于1,结果默认为1在红宝石减法不小于1

我尝试了三元运算符,但0结果为真明显:

(2 - 2) ? (2 - 2) : 1 

是否有表达4 - 2 = 22 - 2 = 13 - 2 = 1一个简洁的方式?

+1

在Ruby *中,只有*'nil'和'false'在逻辑上是错误的。其他的一切,空字符串,零,一个空数组,它们都被认为是逻辑真实的。 – tadman

回答

8

您可以使用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中的一切期待nilfalse被认为是truthy。

+2

'[a - b,1] .max' :) –

+0

@SergioTulentsev为什么你这么酷?完美的一个。我可以使用它还是将它添加为答案? :P –

+2

当然,接受它:) –