Ruby/Struktury sterujące: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Nie podano opisu zmian
Szymon wro (dyskusja | edycje)
Nie podano opisu zmian
Linia 7:
Instrukcji <tt>case</tt> używamy do sprawdzenia sekwencji warunków. Na pierwszy rzut oka jest ona podobna do instrukcji <tt>switch</tt> z języka C lub Java ale, jak za chwilę zobaczymy, znacznie potężniejsza.
 
<source lang="ruby">
<pre>
def okresl(i)
ruby> i=8
ruby> case i
| when 1, 2..5
| puts "1..5"
| when 6..10
| puts "6..10"
| end
end
6..10
 
nil
okresl(8) #=> 6..10
</pre>
</source>
 
<tt>2..5</tt> jest wyrażeniem oznaczającym przedział zamknięty od 2 do 5. Następujące wyrażenie sprawdza czy wartość <tt>i</tt> należy do tego przedziału:
 
<source lang="ruby">
<pre>
(2..5) === i
</presource>
 
<tt>case</tt> wewnętrznie używa operatora relacji <tt>===</tt> by sprawdzić kilkanaście warunków za jednym razem. W odniesieniu do obiektowej natury Rubiego, <tt>===</tt> jest interpretowany odpowiednio dla obiektu który pojawia się jako warunek w instrukcji <tt>when</tt>. Na przykład, następujący kod sprawdza równość łańcuchów znakowych w pierwszym wyrażeniu <tt>when</tt> oraz zgodność wyrażeń regularnych w drugim <tt>when</tt>.