У меня есть модуль, который определяет метод, если он еще не определен. Это касается атрибутов ActiveRecord, поскольку их получатели и сеттеры не определены как методы.Ruby `response_to?` Не работает сразу после определения?
module B
def create_say_hello_if_not_exists
puts respond_to?(:say_hello)
define_method :say_hello do
puts 'hello'
end unless respond_to?(:say_hello)
end
end
class A
def say_hello
puts 'hi'
end
puts respond_to?(:say_hello, true)
extend B
create_say_hello_if_not_exists
end
A.new.say_hello
Ожидаемый результат hi
, но рубин печатает hello
. Зачем?
Может быть связано с Confused about "respond_to?" method
wow! в чем разница между 'response_to? 'и' method_defined? '? – brauliobo
получил его, метод определен в экземпляре, так что 'A.new.respond_to?' Работает. Спасибо @kuriouscoder – brauliobo