我很困惑如何调用在同一个类中定义的另一个函数中的类中定义的函数。这就是我所做的:
class Test
def TestFunc(obj)
puts obj
end
def Test.StatFun(obj)
puts obj
TestFunc(obj)
end
end
Test.StatFun([[5,2], [4,3]])
当我在cmd.exe
中运行时,出现以下错误:
ruby LawtonTest.rb 5 2 4 3 LawtonTest.rb:10:在
StatFun': undefined method
TestFunc'for Test:Class(NoMet hodError) 来自LawtonTest.rb:14:在''
我无法理解。任何帮助将不胜感激。
答案 0 :(得分:1)
你必须在对象上调用它。我认为你需要在Ruby中很好地引用oop,看一下http://zetcode.com/lang/rubytutorial/oop/。但无论如何,问题是,方法(这是你用def
声明的)必须在一个对象上调用,而不是像一个全局函数。因此,如果您想使用TestFunc
,请尝试以下操作:
def Test.StatFun(obj)
puts obj
Test.new.TestFunc(obj)
end
Test.new
部分用于创建一个对象,您可以使用TestFunc
方法。
答案 1 :(得分:0)
我无法在任何地方看到TestFunc的定义。你定义了吗?
此外,一般的Ruby约定是对方法使用小写名称(例如test_func
)
编辑应该真正阅读这个问题...
这里的问题是TestFunc仅为Test类的实例定义,而当您调用Test.StatFun时,执行代码的对象是实际的类测试。这意味着它不知道TestFunc是什么。解决这个问题的一种方法是创建一个新实例(因为这是类知道如何做的一件事):
def Test.StatFun(obj)
puts obj
new.TestFunc(obj)
end