文件模块.rb
module CardExpiry
def check_expiry value
return true
end
end
文件包含.rb
#raise File.dirname(__FILE__).inspect
require "#{File.dirname(__FILE__)}/module.rb"
module Include
include CardExpiry
def self.function
raise (check_expiry 1203).inspect
end
end
打电话
Include::function
这可能吗?
调用时错误触发:
`function': undefined method `check_expiry' for Include:Module (NoMethodError)
最佳答案
你偶然发现了 difference of include
and extend
.
include
使包含模块中的方法可用于您类的实例extend
使包含模块中的方法在类 中可用
当使用 self.method_name
定义方法并在该方法中访问 self
时,self
会绑定(bind)到当前类。
check_expiry
已包含在内,因此仅在实例端可用。
要解决此问题,请扩展 CardExpiry
,或使 check_expiry
成为类方法。
关于ruby - 将模块方法调用到 Ruby 中的另一个模块中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18973906/