Есть что-то, что я не понимаю о ruby переменной экземпляра класса или методам **. Итак, у меня есть этот код, который продолжает давать мне эту ошибку, и я не могу понятьМетоды и переменные экземпляров Ruby
Похоже, что ruby думает, что я пытаюсь вызвать Float.in_celsius, но я хочу сделать этот вызов в своем экземпляре класса.
#-----------------------------------
def ftoc(fr)
fr = fr.to_f
if (fr == 32)
c = 0
elsif (fr == 212)
c = 100
else
c = (fr-32.0)*(5.0/9.0)
end
return c
end
def ctof (cl)
cl = cl.to_f
f = (cl*(9.0/5.0))+32.0
return f
end
#-----------------------------------
class Temperature
attr_accessor :in_celsius, :in_fahrenheit
#class metods
def self.from_celsius(cel)
puts "from celsious\n"
puts "cel: #{cel}\n"
@in_fahrenheit = cel
@in_celsius = ctof(cel)
puts "==============================\n"
return @in_celsius
end
def self.in_celsius
@in_celsius
end
end
puts "==============================\n"
puts Temperature.from_celsius(50).in_celsius
puts Temperature.from_celsius(50).in_fahrenheit
и Ошибка test.rb:54: in '<main>' : undefined method 'in_celsius' for 122.0:float (noMethod Error) enter code here
Вы, вероятно, хотите использовать модуль для такого рода вещи - только мой 2с –
Grag, вы можете упростить 'FTOC (фр)' в 'Защиту FTOC (FR) (fr-32.0) * (5.0/9.0) end'. Вам не нужно преобразовывать 'fr' в float, потому что' fr-32.0' сделает это, и вам не нужно 'return', потому что Ruby возвращает последний выполненный расчет. То же самое для 'ctof()'. –
@CarySwoveland OP путается в отношении переменных экземпляра класса и переменных экземпляра экземпляров класса. Это нужно сначала исправить. –