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:

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

On Nov 13, 10:35 am, Kamil [email protected] wrote:

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’)

t.

On Nov 15, 8:16 am, “Pena, Botp” [email protected] wrote:

> puts ‘world’.in?(a)

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 13, 2007 3:35 PM, Kamil [email protected] wrote:

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

And it works with Interval instance too.

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

From: Trans [mailto:[email protected]]

On Nov 13, 10:35 am, Kamil [email protected] 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)

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??