定数や変数の実験・その4【インスタンス変数の実験】
1.定数の実験
2.グローバル変数の実験
3.ローカル変数の実験
4.インスタンス変数
5.クラス変数の実験
今回は、4.インスタンス変数の実験の実験をしてみました。
インスタンス変数の実験1
@hensu = 'hensu_data'
@hensu = 'hensu_data_new' # もちろん値を書き換えられる
class MyClass
@hensu = 'hensu_data_in_class'
def method1
p @hensu
end
def method2
@hensu = 'hensu_data_in_method2'
p @hensu
end
end
p @hensu # -> "hensu_data_new"
my_instance = MyClass.new
my_instance.method1 # -> nil ※注:"hensu_data_in_class"とは表示されないんだ。へえー。
my_instance.method2 # -> "hensu_data_in_method2"
my_instance.method1 # -> "hensu_data_in_method2" ※注:method2 の中で @hensu に設定した値が共有される
p @hensu # -> "hensu_data_new"
インスタンス変数の実験2
class MyClass
def method1
p @hensu
end
def method2
@hensu = 'hensu_data_in_method2'
p @hensu
end
end
class MyChildClass < MyClass
def child_method1
p @hensu
end
def child_method2
@hensu = 'hensu_data_in_child_method2'
p @hensu
end
end
my_instance = MyClass.new
my_child_instance = MyChildClass.new
my_instance.method2 # -> "hensu_data_in_method2" ※注:親クラスの @hensu の値を書き換えてみる
my_child_instance.child_method1 # -> nil ※注:親クラスの @hensu の値が書き換えられても子クラスの @hensu には影響ない
my_child_instance.method2 # -> "hensu_data_in_method2" ※注:子クラスの @hensu として値が設定された
my_child_instance.child_method1 # -> "hensu_data_in_method2" ※注:子クラスの @hensu の値が共有される
my_child_instance.child_method2 # -> "hensu_data_in_child_method2" ※注:子クラスの @hensu の値を書き換えてみる
my_instance.method1 # -> "hensu_data_in_method2" ※注:子クラスの @hensu の値が書き換えられても親クラスの @hensu には影響ない
Ruby の変数や定数の命名規則は、こちらからどうぞ。
【広告】