【发布时间】:2014-03-06 23:28:23
【问题描述】:
关于 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)简化为def ftoc(fr) (fr-32.0)*(5.0/9.0) end。您不需要将fr转换为浮点数,因为fr-32.0会这样做,并且您不需要return,因为Ruby 返回最后执行的计算。ctof()也一样。 -
@CarySwoveland OP 对类实例变量和类实例的实例变量感到困惑。这需要先解决。
-
好吧..我的主要问题是这里的类实例变量:/
标签: ruby class variables methods instance