かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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

こんなコードを動かすと

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

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

      • -

飯後

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