2013-12-20 34 views
0

所以我是一个java程序员,我试图在ruby上变得更好,但是我在基本原理上失败并且没有获得任何地方。这里是我的类找不到ruby函数的定义

class Main 
     a = Car.new 
     a.instance_variable_set("@make", 'Hyundai') 

     if a.make == 'Hyundai' 
     self.get_hyundai_vehicle_information(a) 
     end 

     def get_hyundai_vehicle_information(a) 
     go_to_hyundai_usa_and_select_vehicle 
     end 
    end 

但我不断收到错误

undefined method 'get_hyundai_vehicle_information' for Main:Class

+0

您需要提供完整的代码才能重现问题。这段代码是不够的 –

+0

你正在类声明中运行它,并且该方法还没有被定义。当你在*类声明期间做事时,订单很重要。 –

+0

只需在声明完成后调用'get_hyundai_vehicle_information'即可。并将其定义为'def self.get_hyundai_vehicle_information' –

回答

2

你在类体中运行的代码在singleton类的Main类的上下文中执行。这基本上意味着,它在类的创建期间在类范围内运行一次,但不在任何类实例中运行。

现在您定义的方法仅适用于实例(即它是一个实例方法)。您可以通过将self.添加到方法名称来定义类方法。然后,您需要先定义方法,然后才能调用它。

请记住,在Ruby中,每段代码都按顺序进行评估。这包括类和方法的定义。在定义它的代码已经运行之前,你不能调用一个方法。