AR삽질러

Ruby クラス変数とクラスメソッド 본문

Ruby/Ruby-日本語

Ruby クラス変数とクラスメソッド

아랑팡팡 2023. 12. 19. 11:31
728x90

 

Ruby クラス変数とクラスメソッド

 

1. クラス変数

 - クラス自体に値を保持することができる変数

 - Rubyで、クラス変数はクラス自体に属する変数で、 クラス変数はクラス内のすべてのインスタンス間で共有され、クラスメソッドからもアクセスできる。

 - クラス変数の名前は常に@@で始まります。 これは、インスタンス変数との主な違いの 1 つで、 インスタンス変数は、各オブジェクト インスタンスに対して別々に存在し、@で始まる。

 - クラス変数を使用する主な理由は、特定のクラスに関連するステータスや情報をすべてのインスタンス間で共有するためで、 たとえば、クラス インスタンスの総数を追跡したり、クラスに関連付けられた設定を保存したりするために使用できる。

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

    def hello
        puts "Hello, I am #{@name}"
    end
end

car = Car.new('ar')
car.hello

 

 

例題

 - Car クラスのインスタンスが作成された回数をカウントして出力する。

class Car
    @@count = 0

    def initialize(name)
        @name = name
        @@count += 1
    end

    def hello
        puts "Hello, I am #{@name}. #{@@count} instance(s)"
    end
end

car1 = Car.new('ar')
car1.hello

car2 = Car.new('IT')
car2.hello

car3 = Car.new('Ruby')
car3.hello

 

 

 


2. クラスメソッド

 - クラスから直接呼ぶことができるメソッド

 - Rubyで、クラスメソッドはクラス自体に属するメソッドで、 これらのメソッドは、特定のインスタンスではなく、クラス自体を介して呼び出される。 クラスメソッドは、クラスのインスタンス(オブジェクト)ではなく、クラス自体に関連するタスクを実行するために使用される。

 

クラスメソッドを定義する方法

1) メソッドの名前にself.

 

例題

 - Classメソッド infoを定義する。

 - クラスメソッド infoを実行すると、インスタンスの生成回数(@@count)を出力する。

class Person
    @@count = 0
    def initialize(name)
        @name = name
        @@count += 1
    end

    def hello
        puts "Hello, #{@name}, #{@@count}"
    end

    def self.info
        puts "#{@@count}"
    end
end

person = Person.new('AR')
person.hello
Person.info

 

self.infoでselfは現在のクラス、つまりPersonクラスを指しっている。 したがって、self.infoはPerson.infoと呼び出される。 このようにクラスメソッドを使用すると、クラスレベルでデータや機能を管理でき、インスタンスの生成なしにクラス名を通じて直接アクセスできる。

 

 

2) class << self ブロック内のメソッドを定義する方法

 

class MyClass
  class << self
    def my_class_method
      puts "This is a class method."
    end
  end
end

MyClass.my_class_method

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST