Co jeśli chcielibyśmy mówić “Hello World” tak aby nasze palce się nie zmęczyły ? Musimy zdefiniować metodę!
Kod def h
rozpoczyna definicję metody. Wskazuje Rubiemu, że
definiujemy metodę, która nazywa się h
. Następna linia to ciało
metody, ten sam kod, który widzieliśmy już wcześniej: puts "Hello
World"
. W końcu ostatnia linia end
mówi Rubiemu, że skończyliśmy
definiować metodę. Odpowiedź Rubiego => nil
mówi nam, że zrozumiał to,
że skończyliśmy definiować metodę.
Krótkie, Powtarzalne Życia Metody
Teraz wypróbujmy uruchomić tę metodę kilka razy:
No cóż, to było proste. Wywołanie metody w Rubim sprowadza się do napisania jej nazwy. Jeśli metoda nie przyjmuje żadnych parametrów, to wszystko czego potrzebujesz. Możesz dodać puste nawiasy, jeśli chcesz ale nie jest to wymagane.
Co jeśli chcielibyśmy mówić “hello” do konkretnej osoby a nie do całego
świata ? Musimy po prostu przedefiniować h
aby przyjmowała imię jako
parametr.
Działa … ale spójrzmy bliżej na to co się tutaj dzieje.
Holding Spots in a String
Co oznacza ta część #{name}
? To sposób w jaki Ruby umieszcza coś w
Stringu. Ta część pomiędzy klamrami jest zamieniana na string (jeśli
jużnim nie jest) i umieszczana wewnątrz otaczającego ją stringa. Możesz
użyć tego sposobu na przykład aby upewnić się, że czyjeś imię jest
drukowane z dużej litery:
Warto zwrócić tutaj uwagę na kilka innych sztuczek. Jedną z nich jest
to, że wywołujemy metodę bez nawiasów. Jeśli to co robisz jest
oczywiste, nawiasy są opcjonalne. Inną sztuczką jest domyślny parametr
World
. Oznacza on “Jeśli imię nie jest podane, użyj domyślnej wartości
"World"
”.
Ewolucja w Kierunku Klasy Greeter
Co jeśli chcielibyśmy mieć prawdziwą klasę witającą, taką, która zapamiętuje twoje imię, wita Cię i traktuje zawsze z szacunkiem. Do tego celu użyjemy obiektu. Stwórzmy klasę “Greeter”.
Nowym słowem kluczowym jest tutaj class
. Definiuje ono nową klasę
nazwaną Greeter oraz kilka metod tej klasy. Zauważ również @name
. Jest
to zmienna instancji, która jest dostępna dla wszystkich metod tej
klasy. Używana jest przez metody say_hi
oraz say_bye
.
Jak teraz wprowadzić tę klasę w ruch ? Utwórzmy obiekt.