Ответ 1
Простой метод:
module MyModule
def self.my_method(*args)
MyModule::MyClass.my_method(*args)
end
end
Более жесткий метод:
Используйте метапрограммирование для записи функции для всех случаев (например, attr_accessor).
У меня есть следующий код Ruby:
module MyModule
class MyClass
def self.my_method
end
end
end
Для вызова my_method
введите MyModule::MyClass.my_method
. Я хотел бы написать обертку для my_method
в самом модуле:
MyModule.my_method
Возможно ли это?
Простой метод:
module MyModule
def self.my_method(*args)
MyModule::MyClass.my_method(*args)
end
end
Более жесткий метод:
Используйте метапрограммирование для записи функции для всех случаев (например, attr_accessor).
Я не уверен, чего вы пытаетесь достичь, но: если вы сделаете его обычным методом и измените его с помощью module_function, вы сможете назвать его любым способом, который вы выберете.
#!/usr/bin/ruby1.8
module MyModule
def my_method
p "my method"
end
module_function :my_method
end
Сделав это, вы можете включить модуль и вызвать метод как метод экземпляра:
class MyClass
include MyModule
def foo
my_method
end
end
MyClass.new.foo # => "my method"
или вы можете вызвать метод как метод класса в модуле:
MyModule.my_method # => "my method"
Вы можете определить метод непосредственно внутри модуля.
module MyModule
def self.my_method
puts "Hi I am #{self}"
end
end
MyModule.my_method #=> Hi I am MyModule