Ruby のインスタンス変数とは?

Rubyを学んでいると、変数名の前に@がつくものを見かけることがあります。

これらは「インスタンス変数」と呼ばれ、クラスやオブジェクトの内部で重要な役割を果たします。

本記事では、このインスタンス変数についてわかりやすく説明します。

インスタンス変数とは?

インスタンス変数は、クラスやオブジェクトの内部で定義され、クラスのメソッド間で共有される変数です。

インスタンスごとに異なる値を持つことができ、クラスの外部からは直接アクセスできません。

インスタンス変数は、クラスの各オブジェクトごとに固有のデータを保持するために使われます。

インスタンス変数の特徴

  • @がつく変数は、そのクラスのインスタンスに属する変数です。
  • インスタンスごとに異なる値を持つことができます。
  • 初期化されるまではnilです。値を代入しない限り、インスタンス変数はnilという値を持っています。
  • クラスのメソッド間で共有可能。同じオブジェクト内であれば、異なるメソッドからでも同じインスタンス変数にアクセスすることができます。

インスタンス変数の例

以下は、簡単なUserクラスを使った例です。

class User
  def initialize(name)
    @name = name  # インスタンス変数 @name の初期化
  end

  def say_hello
    puts "Hello, #{@name}!"  # @name を使用
  end
end

user = User.new("Alice")
user.say_hello  # => "Hello, Alice!"

この例では、@nameがインスタンス変数です。

Userクラスのオブジェクトごとに異なる値を持つことができ、initializeメソッドで初期化された値がsay_helloメソッドで使用されています。

まとめ

インスタンス変数は、クラスやオブジェクト内でデータを保持し、メソッド間で共有するために非常に便利です。

クラスごとに独自のデータを保持しながら、外部に直接公開することなく内部で管理できるため、オブジェクト指向プログラミングではよく使われます。

Rubyでプログラムを作成する際、インスタンス変数の仕組みを理解しておくと、データの管理がスムーズに行えるようになります。