It seems a bit of a waste for Array#=== to default to Object#=== - it'd
be far more useful, IMO, to have it call include?. Can anyone see a
drawback to this?
Here's a real-world use case from the FXIrb code:
def onKeyPress(sender,sel,event)
case event.code
when Fox::KEY_Delete,Fox::KEY_KP_Delete,Fox::KEY_BackSpace
if getCursorPos > @anchor
super
end
which a change to Array#=== would let me write as
config[:delete_keys] =
[Fox::KEY_Delete,Fox::KEY_KP_Delete,Fox::KEY_BackSpace]
.
.
.
when config[:delete_keys]
__etc__
martin
I've wondered about this too. It seems that the === method loosely
translates to a membership test, so it would make sense if it tested
membership with arrays, as well as ranges and classes and regexps. I
can't see any drawbacks, though. (though that doesn't mean there
aren't any)
cheers,
Mark
···
On Sun, 20 Feb 2005 07:04:44 +0900, Martin DeMello <martindemello@yahoo.com> wrote:
It seems a bit of a waste for Array#=== to default to Object#=== - it'd
be far more useful, IMO, to have it call include?. Can anyone see a
drawback to this?
Martin DeMello wrote:
It seems a bit of a waste for Array#=== to default to Object#=== - it'd
be far more useful, IMO, to have it call include?. Can anyone see a
drawback to this?
Here's a real-world use case from the FXIrb code:
def onKeyPress(sender,sel,event)
case event.code
when Fox::KEY_Delete,Fox::KEY_KP_Delete,Fox::KEY_BackSpace
if getCursorPos > @anchor
super
end
which a change to Array#=== would let me write as
config[:delete_keys] =
[Fox::KEY_Delete,Fox::KEY_KP_Delete,Fox::KEY_BackSpace]
.
when config[:delete_keys]
__etc__
martin
How about using the splat idiom?
a = [1,2,3]
case 3
when *a; p a
end
Martin DeMello wrote:
It seems a bit of a waste for Array#=== to default to Object#=== - it'd
be far more useful, IMO, to have it call include?. Can anyone see a
drawback to this?
We'd lose this, FWIW:
points = [
[1,2],
[3,4],
[0,0]
]
points.each do |point|
case point
when [0,0]
puts "origin!"
end
end
To be a bit philosophical, I'd say that Arrays, unlike Regexps, do not exist primarily to match, and so #=== should be Object#===.
Very neat - didn't think of that.
martin
···
Joel VanderWerf <vjoel@path.berkeley.edu> wrote:
How about using the splat idiom?
a = [1,2,3]
case 3
when *a; p a
end