2017-04-25 78 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

當然,接受它:) –