0

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"

私の質問は、このコードを修正する適切な方法は何ですか?また、誰かが啓発できるのなら、どうしてチュートリアルの例が間違っているのでしょうか。ルビーのバージョン間で何か変更はありましたか?

[tw-mbp13-skumaran ruby​​] $ ruby​​ ruby​​23.rb ruby​​23.rb:16:in new'from ruby initialize': wrong number of arguments (1 for 0) (ArgumentError) from ruby23.rb:16:in​​23.rb:16

4

1 に答える 1

1

# ...、コード内にいくつかのメソッドが欠落していることを示しています。これを試してください: https://gist.github.com/3353490

于 2012-08-14T22:13:45.937 に答える