From: Robert Klemme Date: 2007-06-08T01:00:18+09:00 Subject: Re: === operator On 07.06.2007 13:02, dblack@wobblini.net wrote: > Hi -- > > On Thu, 7 Jun 2007, Bertram Scharpf wrote: > >> Am Donnerstag, 07. Jun 2007, 05:32:38 +0900 schrieb Robert Dober: >>> On 6/6/07, dblack@wobblini.net wrote: >>> >>>> Yes; === is called on the when expression(s), with the case object as >>>> argument. >>> Well you are right of course, I said now because I did not understand >>> what OP meant :( >> >> Some may say it's an unexpected behaviour. Others will find >> themselves detecting it as a welcome surprise. This is Ruby >> at its best. > > I always thought it was just the logical way to do the case statement. > Since you're testing something about the case object, you may not know > what it is or what its === method does: > > case x # what is x? > when 1 ... > when "yes" ... > when C > when nil ... > end > > So I don't think it would make sense to have a case construct where > === was called on x. Another reason why that would be an odd way to do it: *all* tests then would have to be implemented in x's class - now how much sense would that make to do that? Just think of the type test (i.e. using class objects in when clause)... Kind regards robert