我已经使用模块来扩展类功能。但突然间我不知道它是确定的,如果我直接包括模块插入类的方法,而不是为这样的类:将模块包含到方法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方法'include'for#' –
Ryan
是的,关于@ davidhu2000我更新了代码。对不起。 –