[#4766] Wiki — "Glen Stampoultzis" <trinexus@...>

21 messages 2000/09/04
[#4768] RE: Wiki — "NAKAMURA, Hiroshi" <nahi@...> 2000/09/04

Hi, Glen,

[#4783] Re: Wiki — Masatoshi SEKI <m_seki@...> 2000/09/04

[#4785] Re: Wiki — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/09/05

Howdy,

[#4883] Re-binding a block — Dave Thomas <Dave@...>

16 messages 2000/09/12

[#4930] Perl 6 rumblings -- RFC 225 (v1) Data: Superpositions — Conrad Schneiker <schneik@...>

Hi,

11 messages 2000/09/15

[#4936] Ruby Book Eng. translation editor's questions — Jon Babcock <jon@...>

20 messages 2000/09/16

[#5045] Proposal: Add constants to Math — Robert Feldt <feldt@...>

15 messages 2000/09/21

[#5077] Crazy idea? infix method calls — hal9000@...

This is a generalization of the "in" operator idea which I

17 messages 2000/09/22

[#5157] Compile Problem with 1.6.1 — Scott Billings <aerogems@...>

When I try to compile Ruby 1.6.1, I get the following error:

15 messages 2000/09/27

[ruby-talk:5122] Re: Types and ===

From: "Hal E. Fulton" <hal9000@...>
Date: 2000-09-26 02:47:49 UTC
List: ruby-talk #5122
----- Original Message -----
From: Yasushi Shoji <yashi@yashi.com>
To: ruby-talk ML <ruby-talk@netlab.co.jp>
Sent: Monday, September 25, 2000 7:25 PM
Subject: [ruby-talk:5120] Re: Types and ===


> '===' does not imply '==' at all.  '===' is defined in each class the
> way to make writing case statement easier.  most classes use '==' for
> '===', but some class, such as class Class and class Range uses
> other.is_a?(self) and self.include?(other), respectively.
>

Yes... I guess one root of my difficulty is that I have chosen to understand
Ruby's case statement in terms of the switch statement in C/C++ or the
case statement in Pascal (among others).

But now I think that Ruby's case statement is not really like any other
multiway branch I have seen in any other language.

> > Actually I have trouble remembering what === means --
> > whether to say x === y or y === x, which are of course
> > not the same.
>
> so, i guess you don't have to remember what '===' at all ;)
>
> I think the moment you need to remember about '===' is when you write
> your own class.  you can define '===' in your own class to control
> case statement.

Yes, I guess that is true... but I do like to have a thorough understanding.

But sometimes I struggle with the case statement because of the lack of
commutativity or symmetry. (Probably there are good reasons === is not
symmetrical. I have not thought about it much.)

For example, if I want to ask, "Which pattern does this string match?" I can
easily do something like:

case mystring
  when /pat1/
     stmt1
  when /pat2/
      stmt
  ...
end

But to ask the question, "Which of these strings matches this pattern?" I
cannot
do this:

case /pattern/
  when str1
      stmt1
  when str2
      stmt2
  ...
end

Hal



In This Thread