夜空日和 [出張版]

星を見上げながら、今日を語ってみようか

 

スポンサーサイト


Category: スポンサー広告   Tags: ---
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Ruby] 同クラス::異インスタンスでの変数アクセス


Category: 技術   Tags: ---
クラスが持つインスタンス変数を、インスタンス間で相互にアクセスしたい場合がある。
よくあるのが、複雑なデータを表現する変数である。
こういう変数は、計算をする上で直接アクセスしたい場合がある。

しかし、Rubyでは (何故か) (ダックタイピングだから当たり前かもしれないが) 同じクラスでも、インスタンス間で内部変数の相互アクセスが行えない。

この問題は、簡単に解決出来る。
class TestA
  # 読込可能にする
  attr_reader :hoge
  # でも protected にする
  protected :hoge

  def initialize (hoge)
    @hoge = hoge
  end

  def copy (test)
    @hoge = test.hoge
  end
end
まず attr_reader の設定はいつも通り。
要となるのは、protected の設定である。
これで、同じクラスから生成されたインスタンスからアクセス出来る。

しかし、 private :hoge とすると「NoMethodError」になるのは何故だろう?
内部でリネームされてるのかな?

スポンサーサイト

04 2012
SUN MON TUE WED THU FRI SAT
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -

03

05


 
プロフィール

ひでたそ

Author:ひでたそ
Comment:
現役大学生で天文好き。
今日もどこかで、上を見ながら歩いています。

 
 
 
最新トラックバック
 
 
検索フォーム
 
 
 
ブロとも申請フォーム
 
QRコード
QRコード
 

Archive   RSS   Login

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。