クラス変数とクラスメソッド

2009/07/30

次のプログラムは、実行するとエラーが発生します。正しく動作するようにプログラムを修正してください。

class Robot
  def self.ping
    @@count += 1
  end

  def count
    @@count
  end
end

r1 = Robot.new
r1.ping

r2 = Robot.new

r2.ping
r1.ping

puts Robot.count

なお、Robotクラスの本来の仕様は次の通りです:

  • インスタンスメソッドpingを呼ぶとクラスの共有カウンタが1ずつ増加する。
  • クラスメソッドcountを呼ぶと現在のカウンタの値が返される。

したがって、このプログラムを端末上で実行すると、画面に3という数が表示されることになります。

--
黒田努


解答と解説の表示・非表示