[RUBY] Différence entre les variables et les variables d'instance

【Aperçu】

1. Que sont les variables </ b>

2. Que sont les variables d'instance? </ B>

3. Quand utiliser des variables et des variables d'instance </ b>

4. Ce que j'ai appris d'ici </ b>

  1. Que sont les variables?

C'est un conteneur pour stocker des lettres et des chiffres!

variable


name = aiueo

Peut être utilisé comme ci-dessus!

Puisqu'il s'agit d'une variable, la partie après "nom" (aiueo) est Vous pouvez mettre ce que vous voulez. Bien sûr, la variable elle-même peut être "définie" avec n'importe quel nom que vous voulez.

«Définition» signifie

name = aiueo

L'Etat de.

«Déclaration» équivaut à «nom» seul en créant une variable avec un nom de variable.
2. Qu'est-ce qu'une variable d'instance?

Une variable qui définit les attributs des données. En d'autres termes, il s'agit de chaque paramètre de la méthode d'instance définie dans la classe.

Variable d'instance



class A
 def B
  @name = aiueo
 end
end

Ce qui précède sont des variables d'instance. Il existe une méthode B dans la classe A Lorsque la méthode B est appliquée, "aiueo" peut être utilisé avec "@name" attribué.

  1. Quand utiliser des variables et des variables d'instance

Les variables </ b> ne peuvent être utilisées qu'en dehors de la méthode. Vous ne pouvez l'utiliser que dans la méthode. (Cependant, si vous définissez une variable dans une méthode d'instance, elle sera appelée une variable locale qui ne peut être utilisée que dans une méthode d'instance.)

Les variables d'instance </ b> peuvent être utilisées dans différentes méthodes d'instance tant qu'elles sont dans la même classe. De plus, dans le modèle MVC, lors du passage de données du contrôleur à la vue, cela devient une variable très pratique qui peut être passée au-dessus du mur!

Les variables locales (variables dans les méthodes d'instance) ont le concept de portée, vous ne pouvez donc pas sauter par-dessus les murs.

  1. Ce que j'ai appris d'ici

J'ai une variable locale sur le contrôleur J'ai eu une "erreur sans méthode". De plus, dans chaque méthode qui reçoit la vue, j'ai oublié d'ajouter "@" et j'ai obtenu "NameError".

Le premier s'est mis en colère lorsque des variables locales sont passées du contrôleur à la vue si elles n'étaient pas définies en premier lieu. (Parce qu'il est devenu une variable locale)

Dans ce dernier cas, la méthode each ne peut pas être utilisée car elle ne peut pas être reçue en tant que tableau car "@" n'est pas ajouté (car chacun reçoit un tableau) = NameError (chacun ne peut pas être utilisé car le nom est différent). Je pense que c'est interprété comme tel.

Recommended Posts