From: "Aleksi Niemelä" Date: 2000-11-07T13:14:02+09:00 Subject: [ruby-talk:6097] Re: detect:ifNone: in Ruby matz queries: > If we can find better name, How about default, defaults or defaulting (I like the last). Here's an example to evaluate: class Object def defaulting(expr=nil) self end end def nil.defaulting(expr=nil) if iterator? yield else expr end end a = [1,2,3,4,5] x = a.detect {|i| i == 7} .defaulting 99 #=> 99 x = a.detect {|i| i == 3} .defaulting 99 #=> 3 x = a.detect {|i| i == 7} .defaulting { 99 } #=> 99 x = a.detect {|i| i == 3} .defaulting { 99 } #=> 3 class Summarizer def matching_sum(sum) @summary.detect {|item| item.name == sum.name}.defaulting { result = Sum.new( sum.name, 0) @summary << result result } end end > I agree to add the method to the next version. I guess we have already couple of features pending to the next version. How about grouping these into 1.7, letting people play with them, and then deciding whether they should be included. Dave says: > I guess that if the block form isn't important we _could_ just use > 'or'... Well, we can use some variant of block form even with 'or'. But as I noted earlier, it's kind of ugly (gives me perlish feelings). - Aleksi