[Ruby] Connaissance de base des variables d'instance de classe, etc.

introduction

Ici, les variables de classe ruby, les variables d'instance, les accesseurs, etc. J'écrirai la partie de base.

Variable de classe

La classe elle-même, la sous-classe Variables pouvant être référencées à partir des méthodes de classe et des méthodes d'instance.

Pour le définir, ajoutez «@@» au début.

class SuperKlass
  @@super_klass_var = :super_klass_val
end

class Klass < SuperKlass
  @@class_var = :class_val
  def self.class_method
      puts "class_method called"
      puts @@super_klass_var
      puts @@class_var
  end

  def instance_method
      puts "instance_method called"
      puts @@super_klass_var
      puts @@class_var
  end
end

klass_instance = Klass.new
Klass.class_method  
  # => class_method called
  # => super_klass_val
  # => class_val
  
klass_instance.instance_method
  # => instance_method called
  # => super_klass_val
  # => class_val

Variable d'instance

En conservant une valeur dans une variable d'instance, il est possible de conserver un état spécifique à un objet. Notez que les variables d'instance ne sont pas accessibles directement depuis l'extérieur de l'objet. Vous devez utiliser la méthode ʻattr_accessor` pour y accéder.

class Famiry
  attr_accessor :name
end

father = Famiry.new

father.name
# => nil
father.name = "Namihey"
father.name
# => Namihey

Si attr_accessor n'est pas utilisé, une erreur NoMethodError se produira.

class Famiry
end

father = Famiry.new

father.name = "Namihey"
# => undefined method `name=' for #<Famiry:0x00007f8a97908bd8> (NoMethodError)

Si vous le définissez en le préfixant avec «@» dans la méthode d'instance, il devient une variable d'instance.

class Geinin
  def initialize(val)
    @val = val
  end

  def tukkomi
    puts @val
  end

end

east = Geinin.new("Pourquoi")
east.tukkomi

north = Geinin.new("Pourquoi")
north.tukkomi

attr_accessor Cette méthode autorise la «référence» et «l'assignation» pour les variables d'instance. ʻAttr_reader pour refuser l'attribution et n'autoriser que les références ʻAttr_writer pour refuser les références et autoriser uniquement les affectations Etc. sont utilisés correctement. Une telle méthode est appelée un «accesseur».

Les méthodes suivantes sont définies à l'aide de la méthode ci-dessus.

#Méthode de référence
def name
  @name
end

#Méthode d'attribution
def name=(val)
  @name = val
end

Variable d'instance de classe

Puisque la classe est un objet de la classe Class, l'objet de classe lui-même Il peut avoir des variables d'instance.

Dans le contexte où self pointe vers une classe, tout comme les variables d'instance ci-dessus Si vous le définissez avec «@» au début, il devient une variable d'instance de classe.

Vous pouvez également vous y référer dans le contexte où self pointe vers la classe.

class klass
  #Définition
  @class_instance_val = :class_instance_val
    
  def self.class_method
    #référence
    @class_instance_val
  end
end

Différence entre la variable de classe et la variable d'instance de classe

Les variables de classe et les variables d'instance de classe peuvent ressentir la même chose, Parce que les variables d'instance de classe sont des variables d'instance d'objets de classe Il ne peut pas être référencé dans la méthode d'instance définie dans cette classe.

En outre, les variables de classe peuvent être référencées et modifiées à partir des classes qui héritent de cette classe. Les variables d'instance de classe ne sont pas autorisées. En résumé, les deux points suivants sont différents.

--Référence de la méthode d'instance

fin

Recommended Posts

[Ruby] Connaissance de base des variables d'instance de classe, etc.
[Ruby] Méthodes de classe, méthodes d'instance, etc.
Connaissance de base de Ruby on Rails
[Ruby] Classes, variables d'instance, instances, etc ...
[Connaissance de base de Java] Portée des variables
Méthode [Ruby], méthode d'instance ...
[Ruby] Liste des commandes de base
[Ruby] Gérez les variables d'instance avec des méthodes d'instance
[Ruby] Afficher le contenu des variables
Notions de base
[Java] Différences entre les variables d'instance et les variables de classe
Connaissance de base de la rédaction de notes de développement Java
[Connaissance de base de Java] À propos de la conversion de type
Les ingénieurs Java comparés pour apprendre la grammaire de base de Ruby maintenant Partie 1 (Basique, Variables)
Concept d'instance ・ Variable de type de classe ・ Constructeur ・ Membre statique
Résumé des connaissances de base des rails acquises par progate
Recommandation de classe de service dans Ruby on Rails
Termes de base de Ruby
Bases de Ruby
Connaissances de base Java 1
À propos des variables et de la portée (ruby)
Introduction à Java pour les débutants Connaissance de base du langage Java ①
[Ruby] Imbrication de classes, héritage et principes de base de soi
[Java Silver] Que sont les variables de classe, les variables d'instance et les variables locales?