From: Christophe Grandsire Date: 2005-10-26T18:33:37+09:00 Subject: Re: Comparing Classes with Case ? Selon Robert Klemme : > > > > Yes, and although the order makes sense, from a functional point of > > view, it is difficult to get my head around the idea that case > > indicates the argument rather than the receiver. > > If you think about it for a moment you'll see that it's the only > reasonable approach: the expression after the case is the item to test and > all expressions after when denomiate conditions. Of course it is the only reasonable approach. I agree completely with it. But it doesn't change that the order in which the case and the when parts read kind of imply a left-to-right, rather than right-to-left, relationship, especially since in other languages I know with a case/switch expression it's exactly what happen under the hood :) . So although I see why it *should* be the way it is in Ruby, I still can't remember it reliably. It's not a Ruby problem, it's a me problem ;) . You can for example do > this, which might make it clearer... > > def Condition(&b) > class < alias === [] > end > b > end > Wow! Some of the things one can do with Ruby make my head spin! The worst is: I can understand what it means!!! ;) > case a_number > when Condition {|x| x < 10} > ... > end > Cool trick indeed :) . But I'll just try to remember the order from now on, or at least remember how to get back to it... -- Christophe Grandsire. http://rainbow.conlang.free.fr It takes a straight mind to create a twisted conlang.