Ruby/Inicjalizacja obiektów: 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 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>.
<
p o #=> "dojrzaly owoc rodzaju: mango"
o2 = Owoc.new #=> ERR: (eval):1:in `initialize': wrong # of arguments(0 for 1)▼
ruby> o6 = Owoc.new▼
</source>
▲ERR: (eval):1:in `initialize': wrong # of arguments(0 for 1)
=== Elastyczna inicjalizacja ===
<source lang="ruby">
class Owoc
end
p o #=> "dojrzaly owoc rodzaju: mango"▼
p o2 #=> "dojrzaly owoc rodzaju: jablko"▼
</source>
▲ | def initialize(r = "jablko")
▲ | @rodzaj = r
▲ | @stan = "dojrzaly"
▲ | end
▲ruby> o5 = Owoc.new "mango"
▲ "dojrzaly owoc rodzaju: mango"
▲ "dojrzaly owoc rodzaju: jablko"
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.
|