require_relative和实用程序方法

时间:2014-11-12 19:10:53

标签: ruby module nomethoderror

我想将一些方法分成一个模块用于抽象目的,但在测试模块中的第一个函数时,我得到一个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

1 个答案:

答案 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