我想将一些方法分成一个模块用于抽象目的,但在测试模块中的第一个函数时,我得到一个nomethod错误。
functions.rb
module Functions
def avg_ticket(vol,count)
(vol.to_f/count).round(2)
end
end
example.rb
require_relative 'functions'
vol = 5000
count = 2500
avg_ticket = Functions.avg_ticket(vol,count)
我收到undefined method 'avg_ticket' for functions:Module (NoMethodError)
这两个文件都在同一个文件夹中,所以我使用require_relative
,如果这有所不同。这可能是基本的,但任何人都可以帮助我理解为什么这里的方法未定义?
修改:将module functions
更改为有问题的module Functions
答案 0 :(得分:1)
您将模块命名为functions
,但您尝试拨打Functions
。名称区分大小写。此外,无论如何,您需要使用大写首字母命名模块。另外,要在模块本身上定义,您要使用def self.avg_ticket
,请参阅以下内容:
module Functions
def self.avg_ticket(vol,count)
(vol.to_f/count).round(2)
end
end
使用它:
p Functions.avg_ticket(2, 25)
> 0.08