[英]Using methods defined in a module with class methods in Ruby
我有一个小问题,我无法完全解决。 由于我想重用我的课堂中定义的许多方法,因此我决定将它们放入一个Helper中,可以在需要时轻松地将其包括在内。 基本类如下所示:
class MyClass
include Helper::MyHelper
def self.do_something input
helper_method(input)
end
end
这是助手:
module Helper
module MyHelper
def helper_method input
input.titleize
end
end
end
现在,由于我认为范围问题,我无法从我的班级中调用“ helper_method”? 我究竟做错了什么?
我猜这是因为do_something input
内部的self
指针是InternshipInputFormatter
,而不是InternshipInputFormatter
的实例。 因此,调用helper_method(input)
适当别名将是self.helper_method(input)
,但是您已经将Helper::MyHelper
作为实例方法(而不是单例self.helper_method(input)
包含在InternshipInputFormatter
类中,因此请尝试使用实例方法扩展该类。作为该类的signelton方法的模块:
class InternshipInputFormatter
extend Helper::MyHelper
def self.do_something input
helper_method(input)
end
end
InternshipInputFormatter.do_something 1
# NoMethodError: undefined method `titleize' for 1:Fixnum
如您所见,该调用已停止了helper_method
内部的执行。 请参考文档以了解include
和extend
之间的详细区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.