Я использовал модуль для расширения функциональности класса. Но вдруг мне интересно, если это нормально, если я включать в себя модуль непосредственно в метод класса, а не в классе, как это:Включить модуль в метод ruby
Оригинальное использование:
модель:
class Baby
include CommunicationSkills
def initialize(name)
@name = name
end
end
модуль:
module CommunicationSkills
def greet
"Hi"
end
end
так мы можем:
ivan = Baby.new('Iván')
ivan.greet
=> "Hi"
но что, если я включаю метод внутри метода непосредственно:
class Baby
def initialize(name)
@name = name
end
def greet(language)
extend GreetLanguages
send(language)
end
end
модуль:
module GreetLanguages
def spanish
"Hola"
end
def english
"Hi"
end
end
так:
ivan = Baby.new('Iván')
ivan.greet('spanish')
=> "Hola"
ivan.greet('english')
=> "Hi"
Я знаю, что это Возможное, но концептуально это правильно?
Я не могу воспроизвести это. –
Я получаю сообщение об ошибке в строке include: '> ivan.greet ('spanish') NoMethodError: undefined method' include 'for # ' –
Ryan
Да, относительно @ davidhu2000 Я обновил код. Прости. –