ruby-docs.org 教程的模块部分介绍了Mixins的概念。给出的示例将第一个参数作为字符串引用并打印出来。但是我在代码中看到参数没有接收器,并且执行确实失败了ArgumentError
# Ruby module Mixin example.
module Debug
def whoAmI?
"#{self.type.name} (\##{self.id}): #{self.to_s}"
end
end
class Phonograph
include Debug
# ...
end
class EightTrack
include Debug
# ...
end
ph = Phonograph.new("West End Blues")
et = EightTrack.new("Surrealistic Pillow")
ph.whoAmI? #» "Phonograph (#537766170): West End Blues"
et.whoAmI? #» "EightTrack (#537765860): Surrealistic Pillow"
我的问题是修复此代码的正确方法是什么?另外,如果有人可以启发,教程中的示例怎么是错误的。ruby 版本之间有什么变化吗?
[tw-mbp13-skumaran ruby]$ ruby ruby23.rb ruby23.rb:16:in initialize': wrong number of arguments (1 for 0) (ArgumentError)
from ruby23.rb:16:in
new' from ruby23.rb:16