我想弄清楚紅寶石中減法塊的最佳方式,如果結果小於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