【发布时间】:2011-11-25 20:27:00
【问题描述】:
我想在 Ruby 模块中放置一个方法,以便可以使用简单的语法从类方法或实例方法调用它:
module MyMod
def fmt *args
args.map { | a | "You said #{a}" }
end
end
class MyClass
include MyMod
def inst
puts fmt 1,2,3
end
def self.cls
puts fmt 4,5,6
end
end
上面的不行,因为类方法(cls)看不到实例方法fmt。如果我将定义更改为self.fmt,则实例方法必须将其调用为MyMod.fmt。
我希望能够从这两种方法中调用fmt (some stuff)。有没有“红宝石”的方式来做到这一点?我可以将模块定义为
module MyMod
def self.fmt *args
args.map { | a | "You said #{a}" }
end
def fmt *args
MyMod.fmt args
end
end
但这不是很干燥,是吗?有没有更简单的方法?
【问题讨论】: