Ruby 練習問題集

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

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

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という数が表示されることになります。

--
黒田努


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

(2009/07/30)

記事に関するご質問は、 hermes@oiax.jp までメールでお送りください。

ウェブサイト構築の発注先を検討されているお客様は、ご相談フォームをご利用ください。