{category}

Ruby - メソッド定義と呼び出し

self

セルフ(言語の基礎

意味 現在のオブジェクトを指す


selfとは?

selfは、現在実行中のメソッドが属するオブジェクト自身を指す特別なキーワードです。オブジェクト内部でそのオブジェクト自身を参照したい場合に使用します。

selfの具体的な使い方

インスタンスメソッド内でのselfの使用例

class Person
  def initialize(name)
    @name = name
  end

  def introduce
    puts "私は#{self.class}クラスのインスタンスで、名前は#{@name}です。"
    puts "私のオブジェクトIDは#{self.object_id}です。"
  end
end

person = Person.new("太郎")
person.introduce

👇出力結果

私はPersonクラスのインスタンスで、名前は太郎です。
私のオブジェクトIDは70368754004980です。

Personクラスのintroduceメソッド内でselfを使用しています。selfを使ってクラス名とオブジェクトIDを取得し、出力しています。これにより、現在のオブジェクトに関する情報を簡単に参照できます。

クラスメソッドの定義でのselfの使用例

class MathHelper
  def self.square(x)
    x * x
  end

  def self.cube(x)
    x * x * x
  end
end

puts MathHelper.square(4)
puts MathHelper.cube(3)

👇出力結果

16
27

MathHelperクラスで、self.squareとself.cubeとしてクラスメソッドを定義しています。selfを使うことで、これらのメソッドがクラスメソッドとして定義され、インスタンスを作成せずに直接クラス名から呼び出すことができます。

selfに関するよくある質問

Q. selfとは何ですか?
A. selfは、現在実行中のメソッドが属するオブジェクト自身を指す特別なキーワードです。インスタンスメソッド内では現在のインスタンスを、クラスメソッド内ではクラス自身を指します。
Q. selfはいつ使うべきですか?
A. selfは主に以下の場合に使用します:1) 明示的に現在のオブジェクトのメソッドを呼び出す時、2) クラスメソッドを定義する時、3) インスタンス変数と同名のローカル変数がある場合に混乱を避けるため。
Q. selfを省略できる場合はある?
A. はい、多くの場合selfは省略できます。例えば、メソッド呼び出しの際、レシーバが自分自身の場合はselfを省略できます。ただし、セッターメソッドを呼び出す場合や、クラスメソッドを定義する場合はselfが必要です。

selfが学べる書籍の紹介

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

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

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」カテゴリーが追加されましました!


関連するそのほかの単語

keys

ハッシュのキーを取得

種類: ハッシュ操作

!

論理否定演算子

種類: 演算子

%=

剰余代入演算子

種類: 演算子

TCPSocket

TCP通信用のソケットクラス

種類: ネットワークプログラミング

private

クラス内部からのみアクセス可能

種類: アクセス制御