fr1 = %{Dogs dogs dog dog dogs.}.word_count
fr1.each_key { |item| puts “#{item} => #{fr1[item]}” }[/code]
Powyzszy przyklad zlicza wyrazy w stringu. Mam 2 pytania odnośnie powyzszego kawalka kodu:
Czy stworzenie klasy String tak jak wyżej po prostu rozszerza klasę String o dodatkową metodę word_count ?
Jak to się dzieje, że w definicji metody word_count nie widac aby przyjmowala ona jakiekolwiek argumenty a jednak jakos program dziala. Skąd metoda ‘downcase’ wie co jest jej argumentem ?
edit:
Odnosnie moich pytan:
Ad1. Tak wlasnie jest
Ad2. downcase wywolywana jest na rzecz obiektu ‘self’ ? (to samo co w javie this ?) I self jest domyslnie i dlatego nie trzeba pisac self.downcase … Metoda ‘downcase’ moze byc wywolana wlasnie przez self.downcase lub po prostu downcase dlatego ze odpowiedz na pytanie 1 jest TAK.
czy dobrze sobie odpowiedzialem na swoje pytania ?
A teraz odstaw tę książkę i weź jakąś dobrze wprowadzającą w podstawy Ruby - np. książkę z kilofem, bo chcesz się brać za praktykę nie poznawszy wcześniej teorii
nie wiem co to ksiazka z kilofem …
Co do odstawienia ksiazki to jej chyba nie odstawie No chyba ze pozniej sie zacznie dopiero jazda. Przeczytalem Tutorial z wikibooks i opis Ruby z ksiazki do ruby on rails wiec nie wiem czy to mi umknelo czy co ale odpowiedz dostalem wlasnie z ksiazki receptury z nastepnego przykladu (a raczej podpowiedz gdy zobaczylem slowko ‘self’ i mi sie juz wszytko w glowie dopasowalo jak to prawdopodobnie jest). Czesto tak mam ze na nastepnej stronie jest odpowiedz a ja glowie sie i troje zeby zrozumiec glupi kawalek kodu.
Zauważyłem, że właśnie pojawiło się tłumaczenie "The Ruby Programming Language " - http://helion.pl/ksiazki/rubypr.htm - sam tylko przeglądałem oryginalną wersję, ale doszły mnie słuchy, że podobno lepsza od kilofa. W sumie Matz jest współautorem, więc coś w tym może być.