Я хочу поместить метод в модуль 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
, но это не СУХО, не так ли?Есть ли более простой способ?