From: Robert Klemme Date: 2008-08-21T20:38:23+09:00 Subject: Re: "num in [1,2,3,4]" in a cool way? 2008/8/21 Martin DeMello : > On Wed, Aug 20, 2008 at 8:03 PM, Mikael Høilund wrote: >> >> num = 5 >> ary.inject(false) { |m, v| true if m or v == num } > > or even > > ary.inject(false) { |m, v| m or v == num } Disclaimer: I would not use #inject in this case. But since you asked... We can even short circuit with #inject: irb(main):003:0> i = 3 => 3 irb(main):004:0> (1..4).inject(nil) {|b,a| break a if i == a} => 3 irb(main):005:0> i = 10 => 10 irb(main):006:0> (1..4).inject(nil) {|b,a| break a if i == a} => nil But then again, you could directly use #find or even better #include?. If it's for integers I'd probably just do irb(main):010:0> i = 3 => 3 irb(main):011:0> i >= 1 && i <= 4 => true irb(main):012:0> (1..4) === i => true Here's a different approach: irb(main):013:0> pat = (1..4).inject(0) {|x,a| x | 1 << a} => 30 irb(main):014:0> pat.to_s 2 => "11110" irb(main):015:0> pat[i] == 1 => true :-) Kind regards robert -- use.inject do |as, often| as.you_can - without end