かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

メソッド内でアクセサメソッドを呼ぶ

こんなコードを動かすと

class Hoge
  attr_accessor :val

  def set_val a
    val = a
  end
end

h = Hoge.new
h.set_val 10
p h.val

結果は

nil

になる。


俺が思ってる感じだとset_valメソッド内でval=メソッドが呼ばれて@valに10が入っているだったんだけどなぁ。
set_valを以下のようにすると大丈夫

def set_val a
  self.val = a
end

とりあえず飯の時間だから後で調べよっと。

      • -

飯後

ローカル変数と解釈されちゃうのか。
じゃぁしゃぁないな。