どうもこんにちは。
今回はRubyのinstance_variable_getメソッドについて、備忘録としてまとめました。
instance_variable_getメソッドとは
instance_variable_getメソッドは、オブジェクトのインスタンス変数の値を取得するためのメソッドです。
Rubyでは通常、インスタンス変数はクラス内で直接アクセスすることはできず、アクセサメソッド(attr_accessor、attr_reader、attr_writer)を通じてアクセスします。
しかし、instance_variable_getを使用すると、これらのアクセサメソッドを介さずに直接インスタンス変数にアクセスできます。
基本的な構文
object.instance_variable_get(:@variable_name)
-
object: インスタンス変数を持つオブジェクト -
:@variable_name: 取得したいインスタンス変数のシンボル。先頭に@を付ける必要があります
instance_variable_setメソッドとの関係
instance_variable_getメソッドとペアでよく使用されるのがinstance_variable_setメソッドです。instance_variable_setはオブジェクトのインスタンス変数に値を設定するためのメソッドです。
object.instance_variable_set(:@variable_name, value)
-
object: インスタンス変数を持つオブジェクト -
:@variable_name: 設定したいインスタンス変数のシンボル -
value: インスタンス変数に設定する値
サンプルコード
サンプルコード
class Person
def initialize(name, age)
@name = name
@age = age
end
end
person = Person.new("Alice", 30)
# インスタンス変数の値を取得
name = person.instance_variable_get(:@name)
age = person.instance_variable_get(:@age)
puts "名前: #{name}"
puts "年齢: #{age}"
# => 名前: Alice
# => 年齢: 30
# インスタンス変数の値を設定
person.instance_variable_set(:@age, 31)
# 更新された値を取得
updated_age = person.instance_variable_get(:@age)
puts "更新後の年齢: #{updated_age}"
# => 更新後の年齢: 31