2017-03-10 169 views
0
module Add 
def addition 
    sum=1+2 
    puts sum 
end 
a=Add.addition 

谁能告诉我什么,我缺少的,为什么我收到此错误 - >NoMethodError红宝石模块

未定义的方法`除”的添加:模块(NoMethodError)

回答

1

您在混淆类方法和实例方法。你的定义:

module Add 
    def addition 
    ... 
    end 
end 

定义方法上的Add实例,而你所谓的模块Add上的方法。如果要定义类/模块方法,则需要定义如下:

module Add 
    def self.addition 
    ... 
    end 
end 
0

如果你想要能够直接调用它,把它定义为一个可直接访问方法:

def self.addition 
    # ... 
end 

或者你可以使用这个总是返工:

module Add 
    # ...(methods)... 

    extend self 
end 

那里会自动将所有混入类型的方法提升为可直接访问的方式。

您也可以更有选择性地标记它们是这样的:

module Add 
    def addition 
    # ... 
    end 
    module_method :addition 
end 

该方法随后可无论是作为Add.addition或者一些其它的模块或类调用include Add