[Ruby] Méthodes de classe, méthodes d'instance, etc.

introduction

La dernière fois, j'ai écrit des articles sur l'héritage de classe et l'imbrication, Cette fois, j'écrirai des connaissances de base telles que les méthodes de classe.

Méthode

Méthode de classe

Comme son nom l'indique, c'est une méthode qui peut être appelée par un objet de classe.

Il ne peut pas être appelé avec un objet instance. Par conséquent, un contraste courant est la «méthode de l'instance». Cela sera discuté plus tard.

Il existe les méthodes de définition suivantes.

Ajouter self. Au nom de la méthode lors de la définition de la méthode

Lorsque vous utilisez votre propre classe comme récepteur dans une méthode, utilisez «nom de classe» ou «self». Il peut être omis, mais «self» dans la définition ne peut pas être omis.

class Klass
  def self.method_a
    new
    puts "created Klass instance"
  end
end

Klass.method_a
# => created Klass instance
enfermer dans la classe << self, end

Tout ce qui est défini pendant ce temps est une méthode de classe Ceci est pratique lors de la définition de plusieurs éléments.

class Klass
  class << self
    def method_a
      new
      puts "created Klass instance"
    end
  end
end

Klass.method_a
# => created Klass instance

Au fait, vous pouvez le faire de la même manière.

class Klass
end

class << Klass
  def method_a
    new
    puts "created Klass instance"
  end
end

Klass.method_a
# => created Klass instance

Méthode d'instance

Une méthode qui peut être appelée par un objet d'instance. Ceci est en contraste avec la méthode de classe précédente Il ne peut pas être appelé à partir d'un objet de classe.

La méthode de définition est la suivante.

class Klass
  def method_a
    puts "method_a called"
  end
  
  def method_b
    method_a
    puts "method_b called"
  end
end

klass_instance = Klass.new
klass_instance.method_b
# => method_a called
# => method_b called

Méthode singulière

Une méthode spécifique à un objet. Il peut être défini en écrivant le nom de l'objet avant le nom de la méthode à définir. Notez que l'objet doit déjà exister lorsque vous le définissez.

class Klass
end

apple = Klass.new
orenge = Klass.new

def apple.tokui_method
  puts "I'm apple"
end

apple.tokui_method
# => I'm apple
orenge.tokui_method
# => undefined method `tokui_method'

Si l'objet spécifié n'existe pas lors de sa définition, une erreur se produit.

class Klass
end

def apple.tokui_method
  puts "I'm apple"
end

apple = Klass.new

apple.tokui_method
# => undefined local variable or method `apple' for main:Object (NameError)

L'appel de super dans une méthode singulière appellera la méthode du même nom défini dans la classe. Il y a aussi la commodité de pouvoir remplacer cette méthode.

class Klass
  def my_name
    puts "I'm fruits"
  end
end

apple = Klass.new
orenge = Klass.new

def apple.my_name
  super
  puts "I'm apple"
end

apple.my_name
# => I'm fruits
# => I'm apple
orenge.my_name
# => I'm fruits

fin

Recommended Posts

[Ruby] Méthodes de classe, méthodes d'instance, etc.
Méthode [Ruby], méthode d'instance ...
À propos des méthodes d'instance Ruby
[Ruby] Connaissance de base des variables d'instance de classe, etc.
Que sont les méthodes de classe Ruby?
Méthodes de classe Java
Méthodes de classe de chaîne
À propos des méthodes Ruby
À propos de l'appel des méthodes d'instance
[Ruby] Est-ce que self fait référence à une classe ou à une instance?
Création d'instances, constructeurs, champs, etc.
[Ruby] Qu'est-ce qu'une instance?
[Ruby] Méthodes singulières et classes singulières
Méthodes et classes Ruby (basiques)
[Ruby] Relation entre la classe parent et la classe enfant. Relation entre classe et instance.
Facile à comprendre la différence entre la méthode d'instance Ruby et la méthode de classe.
Différence entre la méthode d'instance et la méthode de classe
Diverses méthodes de la classe Java String
Écrire des méthodes Ruby en utilisant C (Partie 1)
Entrée standard Ruby et diverses méthodes
Méthode de commodité Ruby pour les jeunes ingénieurs
Différence entre la variable d'instance et la variable de classe
[Ruby] Informations de base sur les classes Date, Heure et DateHeure
Diverses méthodes de la classe String
Comment utiliser les méthodes de classe [Java]
Méthodes Ruby souvent utilisées dans Rails