{category}

Ruby - クラスとオブジェクト

instance_variables

インスタンス バリアブルズ(オブジェクト指向プログラミング

意味 オブジェクトの状態を保持


instance_variablesとは?

instance_variablesは、オブジェクトのインスタンス変数の名前を配列で返すメソッドです。インスタンス変数は、オブジェクトの状態を保持するために使われ、そのオブジェクト固有のデータを格納します。

instance_variablesの具体的な使い方

インスタンス変数の一覧取得

class Product
  def initialize(name, price)
    @name = name
    @price = price
    @created_at = Time.now
  end

  def show_variables
    puts "このオブジェクトのインスタンス変数:"
    instance_variables.each do |var|
      puts "#{var}: #{instance_variable_get(var)}"
    end
  end
end

product = Product.new('ノートPC', 80000)
product.show_variables

👇出力結果

このオブジェクトのインスタンス変数:
@name: ノートPC
@price: 80000
@created_at: 2023-05-20 12:34:56 +0900

この例では、Productクラスを定義し、インスタンス変数@name、@price、@created_atを持たせています。show_variablesメソッドでinstance_variablesを使用し、各インスタンス変数の名前と値を表示しています。

動的なインスタンス変数の追加と確認

class DynamicObject
  def add_variable(name, value)
    instance_variable_set("@#{name}", value)
  end

  def show_variables
    puts "現在のインスタンス変数:"
    p instance_variables
  end
end

obj = DynamicObject.new
obj.show_variables

obj.add_variable('color', 'red')
obj.add_variable('size', 'large')
obj.show_variables

👇出力結果

現在のインスタンス変数:
[]
現在のインスタンス変数:
[:@color, :@size]

この例では、DynamicObjectクラスを定義し、動的にインスタンス変数を追加できるようにしています。add_variableメソッドで新しいインスタンス変数を追加し、show_variablesメソッドでinstance_variablesを使用して現在のインスタンス変数の一覧を表示します。

instance_variablesに関するよくある質問

Q. instance_variablesの役割は?
A. instance_variablesメソッドは、オブジェクトが持つすべてのインスタンス変数の名前を配列として返します。これにより、オブジェクトの状態を調べることができます。
Q. 返される変数名の形式は?
A. instance_variablesメソッドは、インスタンス変数名をシンボルとして返します。例えば、@nameというインスタンス変数は:@nameというシンボルとして返されます。
Q. 値も取得できますか?
A. instance_variablesメソッド自体は変数名のみを返します。変数の値を取得するには、instance_variable_getメソッドを使用するか、attr_readerなどでアクセサメソッドを定義する必要があります。

instance_variablesが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Rubyのinstance_variablesやnew、undef、kind_of?、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

new

新しいオブジェクトを生成

種類: クラスとオブジェクト

undef

メソッドの定義を削除

種類: メソッド

kind_of?

is_a?のエイリアス

種類: 継承

method_removed

メソッド削除を検知するフック

種類: フック

kill

スレッドを強制終了

種類: スレッド