有一些我不明白關於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
你可能想使用一個模塊爲這樣的事情 - 只是我2C –
Grag,可以簡化'FTOC(FR)'來'高清FTOC(FR)( fr-32.0)*(5.0/9.0)end'。你不需要將'fr'轉換爲浮點數,因爲'fr-32.0'會這樣做,並且你不需要'return',因爲Ruby返回最後一次執行的計算。 'ctof()'相同。 –
@CarySwoveland OP對類實例的類實例變量和實例變量感到困惑。需要先解決這個問題。 –