Robert Klemme
6/7/2007 3:59:00 PM
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 <dblack@wobblini.net> wrote:
>>> <snip>
>>>> 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