0
1

More than 3 years have passed since last update.

【自己用メモ】(Ruby)クラス、クラスインスタンス、インスタンス

Last updated at Posted at 2021-01-07

用語

各種変数・メソッド用語について。
スコープ情報の不足分は後日追記予定。(頭の中整理して書くの疲れるぅ〜。。:joy:)
おかしなところ、お気づきな点等ございましたら、
お手数ですがご指導ご指摘、頂けますと幸いです:hand_splayed_tone2:

class A # Aクラス(通常のクラス)
  @@class_variable = "クラス変数"

  # @class_instance_variable = "クラスインスタンス変数"
  # => ここで宣言した場合、「インスタンス変数」ではなく、「クラスインスタンス変数」と見なされる。
  # 「インスタンス変数」と同じプレフィックス(@〜)。

  def initialize # インスタンスメソッド
    @instance_variable = "インスタンス変数"
    puts "#{@instance_variable} at initialize"
  end

  def hoge # インスタンスメソッド
    puts "#{@instance_variable} at xxx"
  end

  def self.fuga # クラスメソッド(定義の方法:特異メソッド方式)
    puts "#{@instance_variable} at yyy"
  end

  class << self # 特異クラス
    def fuga # クラスメソッド(定義の方法:特異クラス方式)
      puts "#{@instance_variable} at yyy"
    end
  end
end

# インスタンスメソッドinitializeからはアクセスできる
instance = A.new # => "インスタンス変数 at initialize" # インスタンス生成

instance.hoge # インスタンスメソッド呼び出し
# インスタンス変数は他のインスタンスメソッドでも使える
instance.hoge # => 'インスタンス変数 at xxx'

A.new.hoge # インスタンスメソッド呼び出し(クラス名.new.インスタンスメソッド名)
A.new.hoge # => 'インスタンス変数 at xxx'

A.fuga # クラスメソッド呼び出し
# クラスメソッドからはインスタンス変数(@〜)は使えない
A.fuga # => nil

参考記事

:relaxed:
@mogulla3さん
- https://qiita.com/mogulla3/items/cd4d6e188c34c6819709
@tbpgrさん
- https://qiita.com/tbpgr/items/56eb65c0ea5882abbb07

0
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1