From: Robert Klemme Date: 2004-01-15T06:21:37+09:00 Subject: Re: [Q] Array.delete "E.-R. Bruecklmeier" schrieb im Newsbeitrag news:400567BA.3070903@eric-bruecklmeier.de... > Robert Klemme schrieb: > > >>Is there a method similar to Array.delete which returns the modified > >>array instead of modifing the array by itself? > > > > > irb(main):010:0> a.reject{|s|s>"b"} > > => ["a", "b"] > > irb(main):011:0> a > > => ["a", "b", "c"] > > > sure, that works. I did is this way: > > (a.collect {|x| x if x != "c"}).compact > > but delete and delete! would be nicer! Here are more versions, slightly more efficient if the array is large and only a small portion is selected: irb(main):008:0> a=%w{a b c} => ["a", "b", "c"] irb(main):009:0> a.inject([]){|arr,s| arr<"b"; arr} => ["a", "b"] irb(main):010:0> a.select{|s| s<="b"} => ["a", "b"] Personally I prefer the select variant because it clearly explains what's going on. I Ruby is so much fun - especially since the advent of "inject". :-) Cheers robert