かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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

こんなコードを動かすと

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

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

      • -

飯後

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