Re: Sowas wie switch() (PHP) gesucht

Michael Neumann <[email protected]> Sun, 01 Aug 2004 20:39:03 +0200
Newsgroups gmane.comp.lang.ruby.german
Message-ID <[email protected]>
Philipp Kern wrote:
> On So, 2004-08-01 at 19:48, Dirk Einecke wrote:
> 
>>Gibt es in Ruby sowas wie switch() in PHP in Ruby? Klar ich könnte es so 
>>machen:
> 
> 
> case foo
>   when 1 then puts 1
> end
> 


Is sogar noch besser als in C, da du nicht aufpassen musst, das "break" 
zu vergessen:

case foo
when 1
   ...
when 2
   ...
when 3,5,7   # auch mehrfach vergleiche möglich
   ...
when 8..10   # ranges gehen auch
   ...
else
   # 'default:' zweig
end

natürlich geht das für jedes beliebige objekt, nicht nur zahlen. hierbei 
  wird per === verglichen (nicht ==), deshalb funktioniert das auch mit 
den ranges, da z.B. (8..10) === 5 wahr ergibt. also das beispiel oben 
ist äquivalent zu:

if 1 === foo then
    ...
elsif 2 === foo then
   ...
elsif 3 === foo or 5 === foo or 7 === foo
   ...
elsif (8..10) === foo
   ...
else
   ...
end


Grüsse,

   Michael