Ruby/Zmienne lokalne: 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 89:
 
Ten rodzaj programowania można by uważać za lekko perwersyjny zorientowany obiektowo [[w:Framework|framework]]. Metoda <tt>pudelko</tt> odgrywa rolę klasy podczas gdy <tt>wez</tt> i <tt>wloz</tt> służą jako metody, natomiast <tt>zawartosc</tt> jest samotną zmienną instancji. Oczywiście stosowanie właściwego szkieletu klas Rubiego prowadzi do znacznie bardziej czytelnego kodu.
 
=== Wiele wartości w instrukcji <tt>return</tt> ===
 
Innym ciekawym elementem w przykładzie powyżej jest instrukcja <tt>return wez, wloz</tt>, która zwraca dwie wartości. W Rubim instrukcja <tt>return</tt> może zwracać więcej niż jedną wartość. Rozważmy taki przykład:
 
<pre>
def metoda
return "a", 0, "b"
end
 
tab = metoda
t1, t2 = metoda
 
puts tab.class # => Array
puts t1.class # => String
puts t2.class # => Fixnum
</pre>
 
Jak widzimy, jeżeli użyjemy jednej zmiennej metoda zwróci nam tablicę, w której będą wszystkie wartości wyrażeń przekazanych do instrukcji <tt>return</tt>. Jeżeli po lewej stronie przypisania wyniku metody umieścimy więcej niż jedną zmienną (<tt>t1</tt>, <tt>t2</tt>, itd.) będą do nich podstawione kolejne wartości zwracane przez <tt>return</tt>. Jeżeli zmiennych po lewej stronie będzie mniej niż wartości zwracanych przez metodę, "nadmiarowe" ''wartości'' zostaną zignorowane (jak ma to miejsce wyżej). Jeżeli natomiast będzie ich więcej, "nadmiarowe" ''zmienne'' dostaną wartości <tt>nil</tt>:
 
<pre>
a1,a2, a3, a4 = metoda
puts a4.nil? # => true
</pre>
 
<noinclude>
{{ProstaNawigacja|spis=Ruby|poprzart=Ruby/Zmienne instancji|poprz=Zmienne instancji|nastart=Ruby/Stałe klasowe|nast=Stałe klasowe}}