我在ruby控制台中,我正在尝试调用一个方法,但我没有正确的语法。
以下是文件的结构:
module App
module Tools
module Pollers
class Kpi
attr_reader :start_time,:stop_time
def initialize(start_time,stop_time)
@start_time = start_time
@stop_time = stop_time
end
.....
我试图在控制台中调用这个:
?> kpi = App::Tools::Pollers::Kpi.initialize(start,end_date)
SyntaxError: compile error
(irb):17: syntax error, unexpected tCONSTANT, expecting kDO or '{' or '('
有人能够指出我正确的语法来调用初始化吗?
谢谢!
答案 0 :(得分:7)
initialize
是类Kpi
的实例方法。 App::Tools::Pollers::Kpi
是一个类,只能在其上运行类方法。 Ruby为每个类提供了一个免费初始化的类方法。此方法为new
。调用new
,它使用与initialize
相同的参数,并返回一个实例:
kpi = App::Tools::Pollers::Kpi.new(start,end_date)
答案 1 :(得分:3)
根据错误消息判断,问题出在其他地方,但您可能需要Kpi.new
,而不是Kpi.initialize
。
嗯,显然它不在其他地方:)。
答案 2 :(得分:3)
这将是
App::Tools::Pollers::Kpi.new(start,end_date)
您的irb会话中似乎还存在语法错误。