Ruby Metoda pobierająca argumenty

0

Kod programu

 obj = Object.new
def obj.c2f(c)
	c * 9.0 / 5 + 32
	puts obj.c2f(100)
end
obj.c2f

Powinien zrealizowany zostać następujący wynik: 212.00

Próbowałem to zrealizować na kilka sposobów i irb za każdym razem zwraca komunikat z błędem, który próbowałem naprawić / zmienić / poprawić i za każdym razem błąd w irb odnosił się do innego fragmentu w kodzie (po modyfikacjach) więc powróciłem do początkowego zapisu, który powyżej przedstawiłem.

Próbowałem obiekt wywołać także przez obj.c2f(c) i też nic nie pomogło.

1

Znowu bierzesz zadania z tamtej książki? :) Ten kod co podałeś ma pełno błędów. Wystarczy napisać tak :

class Object

    def c2f(c) 
    f = 32.0 + (9.0 / 5.0 * c)
    f
    end

end

obj = Object.new
obj.c2f(100)
1

Ehhh… znajdź jakiś porządny kurs Rubiego.

Po pierwsze, jakkolwiek można tak definiować obiekty i metody w Rubym to tak się nie robi.

Błędy jakie masz:

  1. Definiujesz za każdym razem nową metodę dla instancji obj
  2. Używasz Object bez sensu. Object jest rodzicem prawie wszystkich klas w Rubym i ogólnie zmienianie jego działania jest złym pomysłem.
  3. Wewnątrz metody, którą napisałeś masz nieskończoną rekurencję.
  4. IRb jest to tzw. REPL czyli Read Eval Print Loop, więc to jest naturalne, że za każdym razem odnosi się do innego miejsca w kodzie, bo za każdym razem tworzysz nową metodę.
  5. Do takich funkcji nie używa się klas a raczej modułów:
module Temperature
  def self.celcius_to_farenheit(c)
    c * 9.0 / 5 + 32
  end
end

1 użytkowników online, w tym zalogowanych: 0, gości: 1