Wywołanie obiektu

def obj.talk
puts "Jestem obiektem."
puts "(Czy jesteś obiektem?)"
end

Jak wywołać powyższy kod, niestety przez zapisanie jako nazwa.rb nie idzie. W książce pisze jedynie, aby stworzyć obiekt obj = Object.new i coś o wywołaniu przez obj.talk

tworzysz obiekt:

class SampleObject
  def talk
    puts "Jestem obiektem."
    puts "(Czy jesteś obiektem?)"
  end
end

obj = SampleObject.new
obj.talk

czyli metoda def talk, z jakiej książki korzystasz ?

Ruby. Przewodnik programisty wydawnictwa Helion, autor David A.Black

Działa. W książce nic nie było o class SampleObcject

Rozwiązałem to metodą z tej książki i działa, nie wiedziałem, że na początku muszę zdefiniować obj = Object.new i na końcu obj.talk

obj = Object.new
def obj.talk
puts “Jestem obiektem.”
puts “(Czy jesteś obiektem)”
end

obj.talk
gets

(gets dlatego, że program mi się zamyka).

Ogólnie książka wydaje się dobra, ale jeżeli ma się już jakieś podstawy w programowaniu o czym sam autor pisze i dodał też, że wiele informacji trzeba będzie przerobić na własną rękę.

Znów problem:

ticket = Object.new 
def ticket.date 
	"01/02/02"
end
def ticket.venue 
	"Sala Miejska"
end
def ticket.performer
	"Mark Twain"
end
def ticket.seat
	"Balkon drugi. rząd J, miejsce 12"
end
def ticket.price 
	5,50
end
print "Bilet na wydarzenie: "
print ticket.event + ". Miejsce: "
print ticket.venue + ". Data: "
puts ticket.data + "."
print "wykonawca: "
puts ticket.performer + "."
print "Miejsce: "
print ticket.seat + "."
print "Cena: "
puts "%,2f." % ticket.price
obj.talk

Widzicie gdzieś wyżej może błąd? Wszystko zrobiłem tak jak pisze i znów problemy…

Próbowałem obiekt zdefiniować tak jak napisał to @wafcio i nic nie pomogło.

Mam na dzieję, że po ciężkich początkach w końcu opanuję to tak, że dalsza nauka pójdzie gładko, bo w przeciwnym wypadku to tą książkę wyrzucę za okno.

Już po posługiwaniu sie klasą Object wynika, że jest to słaba książka. Object jest główną klasą w Ruby po której dziedziczą inne klasy, więc nie powinno się jej ruszać (taki dopisywanie metod do klas z core Ruby nazywa się monkey-patching i już dawno temu zostało uznane przez większość osób za złą praktykę).

PS. nie spodziewałem się że książka z wydawnictwa Manning będzie posiadała takie mankamenty.

Użyłem nazwy SampleObject a nie Object gdyż tej drugiej nie powinno się używać. Wytłumaczone wyżej.

Jak masz jakiś błąd to przeklej tutaj (lub załóż repozytorium na githubie) kod i wskaż co dokładnie nie działa.

Czyli co na Twoim miejscu powinienem zrobić? Bo jeśli nauczę się tak, to potem znów zapewne część rzeczy będę musiał zmieniać. Czy nie lepiej tą książkę odstawić lub sprzedać?

Tym bardziej, że to co jest opisywane tej książce dotyczy wersji 2.1 Ruby.

Nie wiem jak wygląda reszta tej książki, może dalej będzie ok.

W tym kodzie co wkleiłeś

Primo: 5,50 liczb nie zapisuje się z przecinkiem tylko z kropką.

Secundo:

print ticket.event + ". Miejsce: "

Próbujesz wywołać event a nigdzie tego nie zdefiniowałeś.

Tertio:

puts ticket.data + "."

Próbujesz wywołać data, a wyżej masz zdefiniowane date a nie data

Quatro:

puts "%,2f." % ticket.price

Pomiędzy procentem a dwójką masz przecinek a powinieneś mieć kropkę.

Quinto:

obj.talk

Nie masz nigdzie wyżej w kodzie zdefiniowanego talk.

Wszystkie te powyższe błędy wyłapałem nie dlatego, że jestem taki bystry, tylko dlatego, że poinformował mnie o nich ruby. Wystarczyło uruchomić program i przeczytać gdzie jest błąd, następnie poprawić go i znów uruchomić program. I tak uruchamiać dopóki błędów nie będzie.

Jeżeli przepisałeś kod z książki w 100% poprawnie, to znaczy że książka powinna trafić do kosza. A jeżeli tylko przepisałeś źle, to się nie przejmuj, takie drobne błędy to na początku pisania standard, każdy to przechodził :wink:

Przepisałem tak jak było w książce.

Między procentem a dwójką jest w książce przecinek nie kropka.

To się nadziałek z tą książką. Ruby to świetny język programowania, ale niestety nie znalazłem nic innego co mogłoby być ciekawym wprowadzeniem do Ruby i trafiłem na tą pozycję więc zamówiłem. Niestety ogranicza mnie angielski, którego się zacząłem niedawno uczyć (poza podstawami ze szkoły), ale jeszcze za wcześnie na angielskie książki.

Może jest coś ciekawego w PL?

Cześć,

zacznę od tego, że sam jakiś czas temu zaczynałem przygodę z Ruby i przejrzałem trochę różnych tutoriali. Odnoszę wrażenie, że zaczynasz dopiero z programowaniem(a przynajmniej z obiektowym) i jako tutorial przyjemny, jak dla mnie solidny i dobrze przygotowany poleciłbym ten z codeacademy.com.

Nie spełnia on jednak jednego z twoich wymagań, tzn. jest w języku angielskim. Wziąłem to pod uwagę podczas polecania go. Otóż przerabiając go odniosłem wrażenie, iż był tworzony również dla osób, które aż tak dobrze języka angielskiego nie znają i jest nastawiony na mniejszą ilość tekstu, ale większą ilość twojego własnego wkładu(po prostu wykonywania narzuconych w podpunktach zadań).

Możesz odpalić w jednej karcie kurs, w drugiej translator i szkolić się zarówno z Ruby, jak i z angielskiego(dodatkowo pod kątem późniejszego czytania dokumentacji).

Pozdrawiam,
Kuba

PS To mój pierwszy post tutaj, właściwie założyłem konto, żeby odpowiedzieć(przymierzałem się do tego już jakiś czas), tak więc cześć wszystkim czytającym :slight_smile: