Handy method Object#in?

I wish there would be this simple method in the core:

class Object
  def in?(an_array)
    an_array.include?(self)
  end
end

Having that it's nice to write:

a = %w(hello world out there)
puts 'world'.in?(a)

And it works with Interval instance too.

Hi --

···

On Wed, 14 Nov 2007, Kamil wrote:

I wish there would be this simple method in the core:

class Object
def in?(an_array)
   an_array.include?(self)
end
end

Having that it's nice to write:

a = %w(hello world out there)
puts 'world'.in?(a)

And it works with Interval instance too.

This is a bit of a perma-thread on this mailing list. I guess it's
hard to Google for :slight_smile: But it's been talked about a lot.

David

--
Upcoming training by David A. Black/Ruby Power and Light, LLC:
   * Advancing With Rails, Berlin, Germany, November 19-22
   * Intro to Rails, London, UK, December 3-6 (by Skills Matter)
See http://www.rubypal.com for details!

concise, but it inverts the oop flow. is it really a big deal to do:

  a.include?('world')

t.

···

On Nov 13, 10:35 am, Kamil <kamil.kuk...@gmail.com> wrote:

I wish there would be this simple method in the core:

class Object
  def in?(an_array)
    an_array.include?(self)
  end
end

Having that it's nice to write:

a = %w(hello world out there)
puts 'world'.in?(a)

It is nice, but I would advise you to profile code that uses it and
ask yourself if it is worth the cost.

Regards,
Sean

···

On Nov 13, 2007 3:35 PM, Kamil <kamil.kukura@gmail.com> wrote:

I wish there would be this simple method in the core:

class Object
  def in?(an_array)
    an_array.include?(self)
  end
end

Having that it's nice to write:

a = %w(hello world out there)
puts 'world'.in?(a)

And it works with Interval instance too.

# > I wish there would be this simple method in the core:
# > class Object
# > def in?(an_array)
# > an_array.include?(self)
# > end
# > end
# > Having that it's nice to write:
# > a = %w(hello world out there)
# > puts 'world'.in?(a)
# concise, but it inverts the oop flow. is it really a big deal to do:
# a.include?('world')

i'm not sure what you mean by oop flow, but i use it like,

obj="world"
array = %w(hello world out there)

obj.method if obj in? array
   
in english eg, i'd say

john will swim if he is on the swimming team.

not

john will swim if the swimming team includes him (??) [ or replace include w other relevant words]

but yes, that is english, so in ruby we prefer the latter? (just teasing :wink:

in fact, i would even like to extend #in? to return the position (if array) or pair (if hash) of obj in collection (nil otherwise); currently include?only returns plain true/false.

kind regards -botp
  
ps: heheh, note that i'm also using #in in facets among other things :slight_smile: why (in ruby) can't an object ask itself if it's a member of a collection??

···

From: Trans [mailto:transfire@gmail.com]
# On Nov 13, 10:35 am, Kamil <kamil.kuk...@gmail.com> wrote:

From: Trans [mailto:transf...@gmail.com]
# > I wish there would be this simple method in the core:
# > class Object
# > def in?(an_array)
# > an_array.include?(self)
# > end
# > end
# > Having that it's nice to write:
# > a = %w(hello world out there)
# > puts 'world'.in?(a)
# concise, but it inverts the oop flow. is it really a big deal to do:
# a.include?('world')

i'm not sure what you mean by oop flow, but i use it like,

obj="world"
array = %w(hello world out there)

obj.method if obj in? array

in english eg, i'd say

john will swim if he is on the swimming team.

not

john will swim if the swimming team includes him (??) [ or replace include w other relevant words]

but yes, that is english, so in ruby we prefer the latter? (just teasing :wink:

true enough, computer language tend to force different order though.
try to imagine it forth :wink:

in fact, i would even like to extend #in? to return the position (if array) or pair (if hash) of obj in collection (nil otherwise); currently include?only returns plain true/false.

not a bad idea.

kind regards -botp

ps: heheh, note that i'm also using #in in facets among other things :slight_smile: why (in ruby) can't an object ask itself if it's a member of a collection??

Haha! yep. you got me :wink: but i think its fine for add-on, i mean Ruby
can't do everything on it's own, can it :wink:

the reason ruby itself should not, is because it adds a method to all
objects that simply inverts the actual oop order. techincally we could
do that with just about every method.

  a.index(e)
  e.index_of(a)

  h.key?(k)
  k.key_of?(h)

etc.

Now this reminds me though, why don't we have String#puts ?

t.

···

On Nov 15, 8:16 am, "Pena, Botp" <b...@delmonte-phil.com> wrote:

# On Nov 13, 10:35 am, Kamil <kamil.kuk...@gmail.com> wrote: