2011-10-19 93 views
28

我知道我可以沒有它,但問題一直困擾着我。Ruby等價於Groovy的Elvis(?:)運算符?

是否存在一個與Groovy的Elvis operator?:)等效的Ruby成語?

從本質上講,我希望能夠縮短這個

PARAM = ARGV[0] ? ARGV[0] : 'default' 

或等價

PARAM = 'default' unless PARAM = ARGV[0] 

弄成這個樣子

PARAM = ARGV[0] ?: 'default' 
+1

可能的重複[在Ruby中是什麼意思?](http://stackoverflow.com/questions/995593/what-does-mean-in-ruby) –

+5

@AndrewGrimm只有當你已經知道答案:p – Igor

回答

42

沒關係:-)我只是發現了在找到操作員的姓名後回答自己。

here

PARAM = ARGV[0] || 'default' 

(必須是「因爲我玩弄4種語言所以我現在忘了我能做到這一點擺在首位。)

+3

另外,如果你正在做類似'@params = @params || 5'你可以將它縮短爲'@params || = 5' –

+3

@RyanBigg:迂腐,它更像'@params || @params = 5'。 http://stackoverflow.com/questions/995593/what-does-mean-in-ruby/2505285#2505285 –

3

是不是PARAM = ARGV[0] ? ARGV[0] : 'default'相同作爲PARAM = (ARGV[0] || 'default')