Skip to main content
 首页 » 编程设计

ruby中require_relative 和实用方法

2025年02月15日162zdz8207

出于抽象目的,我想将一些方法分离到一个模块中,但在测试模块中的第一个函数时出现 nomethod 错误。

函数.rb

module Functions 
 
  def avg_ticket(vol,count) 
    (vol.to_f/count).round(2) 
  end 
 
end 

示例.rb

require_relative 'functions' 
vol = 5000 
count = 2500 
avg_ticket = Functions.avg_ticket(vol,count) 

我收到一个函数未定义的方法“avg_ticket”:Module (NoMethodError)

两个文件都位于同一个文件夹中,因此我使用 require_relative (如果这有影响的话)。这可能是基本的,但是任何人都可以帮助我理解为什么该方法在这里未定义吗?

编辑:模块函数更改为有问题的模块函数

请您参考如下方法:

您将模块命名为 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