这是代码:
module A
class C1
def self.grovel(x)
return A::helper(x) + 3
end
end
class C2
def self.grovel(x)
return A::helper(x) + 12
end
end
private
def helper(y)
y + 7
end
module_function :helper
end
f = A::C1.grovel(7)
puts f
puts A::C2.grovel(25)
我正在使用遗留代码,试图避免改变太多。我不确定我是否会使用相同的方法创建两个单独的类,因为每个类只包含一个方法,并且具有通用代码。我想将公共代码提取到只有 A 中的方法可以看到的方法中,但仍然必须使用其完全限定名称(“A::helper”)调用它。
有没有更好的方法来做到这一点?理想情况下,我想将公共代码包装在一个方法中(我们仍然称其为“帮助程序”),该方法可以在没有任何限定的情况下从类 grovel 方法中调用,但不容易用于模块 A 之外的代码。
谢谢。