Ruby/Inicjalizacja obiektów: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Nie podano opisu zmian |
|||
Linia 7:
Ilekroć Ruby tworzy nowy obiekt, szuka metody nazwanej <tt>initialize</tt> i wykonuje ją. Tak więc najprostszą rzeczą, którą możemy zrobić jest użycie metody <tt>initialize</tt>, by przypisać domyślne wartości do wszystkich zmiennych instancji.
<
class Owoc
def initialize
Linia 17:
o = Owoc.new
p o #=> "dojrzaly owoc rodzaju: jablko"
</syntaxhighlight>
=== Zmiana założeń w wymagania ===
Linia 23:
Będą takie przypadki, że domyślna wartość nie będzie miała wielkiego sensu. Czy jest w ogóle coś takiego jak domyślny rodzaj owocu? Bardziej pożądanym może być wymaganie, by każdy kawałek owocu posiadał swój własny rodzaj określony podczas tworzenia. By zrobić to, możemy dodać formalny argument do metody <tt>initialize</tt>. Z powodów, w które nie będziemy się teraz zagłębiać, argumenty które przekazujesz do metody <tt>new</tt> są dostarczane do <tt>initialize</tt>.
<
class Owoc
def initialize(r)
Linia 34:
p o #=> "dojrzaly owoc rodzaju: mango"
o2 = Owoc.new #=> ERR: (eval):1:in `initialize': wrong # of arguments(0 for 1)
</syntaxhighlight>
=== Elastyczna inicjalizacja ===
Linia 40:
Jak wyżej widzimy, gdy tylko argument dołączony jest do metody <tt>initialize</tt>, nie można go opuścić bez generowania błędu. Jeśli chcemy nieco bardziej dbać o użytkownika, możemy argumentom nadać od razu wartości domyślne.
<
class Owoc
def initialize(r = "jablko")
Linia 53:
o2 = Owoc.new
p o2 #=> "dojrzaly owoc rodzaju: jablko"
</syntaxhighlight>
Wartości domyślnych możesz używać dla każdej metody, nie tylko <tt>initialize</tt>. Lista argumentów musi być tak ustawiona, by argumenty z domyślnymi wartościami były podawane jako ostanie.
|