or even
ary.inject(false) { |m, v| m or v =3D=3D 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 =3D 3
=3D> 3
irb(main):004:0> (1..4).inject(nil) {|b,a| break a if i =3D=3D a}
=3D> 3
irb(main):005:0> i =3D 10
=3D> 10
irb(main):006:0> (1..4).inject(nil) {|b,a| break a if i =3D=3D a}
=3D> 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 =3D 3
=3D> 3
irb(main):011:0> i >=3D 1 && i <=3D 4
=3D> true
irb(main):012:0> (1..4) =3D=3D=3D i
=3D> true
Here's a different approach:
irb(main):013:0> pat =3D (1..4).inject(0) {|x,a| x | 1 << a}
=3D> 30
irb(main):014:0> pat.to_s 2
=3D> "11110"
irb(main):015:0> pat
=3D=3D 1
=3D> true
Kind regards
robert
--=20
use.inject do |as, often| as.you_can - without end