rubyの変数の概要

675 ワード

a = 1
puts "a = #{a}; a.object_id: #{a.object_id}" # =》 a = 1; a.object_id: 3
def abc(a)
  puts "a = #{a}; a.object_id: #{a.object_id}" # =》 a = 1; a.object_id: 3
  a = 2
  puts "a = #{a}; a.object_id: #{a.object_id}" # =》 a = 2; a.object_id: 5
end

abc(a)
puts "a = #{a}; a.object_id: #{a.object_id}" # =》 a = 1; a.object_id: 3

rubyの1つのメソッド内で、図abcメソッドのように変数aがパラメータとして渡されると、メソッドabcの内部では、パラメータaは変数aを指すポインタを表すので、彼女のobject_idは3であるが、付与操作が発生すると、パラメータaは他の変数を指すポインタタイプからintタイプの変数になる.だからこの時aのobject_idは5.メソッドの実行が完了すると、パラメータaのライフサイクルが終了する.メソッド外では変数aは消失せず,値も変化しなかった.