2011-11-30 86 views
1

有沒有更好的方式來寫在Ruby中,沒有寫「酒吧」兩次?紅寶石成語默認值

foo = bar > 0 ? bar : 1 
+0

我不能回答我的問題8小時,而是:富= [巴,1。最大 – dooche

+0

假設它是一個整數,肯定的是,雖然我不相信這是更好的。 –

+0

@ miku的答案實際上是Ruby比較常見的答案。 – Nick

回答

4

不是一般的使用情況,但:

foo = [bar, 1].max 
3
$ irb 

>> x ||= "default" 
=> "default" 

>> x ||= "nothing changes, since x has been defined" 
=> "default" 

x的值將與「默認」來代替,但只有當x是零或假的。所以我不確定它是否適合您的使用案例(x > 0)

x ||= "default"只是x || x = "default"的簡寫。

+0

技術上'x || =「default」'是'x = x ||的簡寫形式「默認」,無論如何,這意味着同樣的事情。 –

+1

@LBg:不是,它是'x || x =「默認」。請參閱http://www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488.html –

+2

@AndrewGrimm:我剛跑過'定義? x || =「」#=>「賦值」','定義? x = x || 「」#=>「賦值」和「定義? x || x =「」#=>「表達式」'。但是,是的,你說得對,謝謝。 –