Ruby Variables

Une variable est un emplacement de stockage qui contient toute donnée pouvant être utilisée par n'importe quel programme.

Ruby prend en charge cinq types de variables.

  • Commencent généralement par des lettres minuscules ou des traits de soulignement : variable (Variable).
  • $$ au début : variable globale (Variable globale).
  • @@ au début : variable d'instance (Variable d'instance).
  • @@@@ au début : variable de classe (Variable de classe). Les variables de classe sont partagées dans toute la chaîne d'héritage.
  • Commencent par une lettre majuscule : constante (Constante).

Vous avez déjà appris ces variables dans les chapitres précédents. Ce chapitre expliquera ces cinq types de variables en détail.

Variables globales Ruby

La valeur d'une variable globale non initialisée est nilnil, et l'utilisation de l'option -w produira un avertissement.

L'affectation d'une valeur à une variable globale modifie l'état global, donc les variables globales ne sont pas recommandées.

L'exemple suivant montre l'utilisation des variables globales.

Exemple

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $global_variable = 10 class Class1 def print_global puts "La variable globale est affichée dans Class1 sous la forme #$global_variable" end end class Class2 def print_global puts "La variable globale est affichée dans Class2 sous la forme #$global_variable" end end class1obj = Class1.new class1obj.print_global class2obj = Class2.new class2obj.print_global

Essayez-le »

Ici, $global_variable est une variable globale. Cela produira le résultat suivant :

Remarque :En Ruby, vous pouvez accéder à la valeur de n'importe quelle variable ou constante en plaçant le caractère # avant la variable ou la constante.

全局变量在 Class1 中输出为 10
全局变量在 Class2 中输出为 10

Variables d'instance Ruby

Les variables d'instance commencent par @. La valeur d'une variable d'instance non initialisée est nilnil, et l'utilisation de l'option -w produira un avertissement.

L'exemple suivant montre l'utilisation des variables d'instance.

Exemple

#!/usr/bin/ruby class Customer def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr end def display_details() puts "Customer id #@cust_id" puts "Customer name #@cust_name" puts "Customer address #@cust_addr" end end #Créer un objet cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") #Appeler la méthode cust1.display_details() cust2.display_details()

Essayez-le »

Ici, @cust_id, @cust_name et @cust_addr sont des variables d'instance. Cela produira le résultat suivant :

Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala

Variables de classe Ruby

Les variables de classe commencent par @@ et doivent être initialisées avant de pouvoir être utilisées dans les définitions de méthodes.

Référencer une variable de classe non initialisée produit une erreur. Les variables de classe peuvent être partagées dans les sous-classes ou sous-modules de la classe ou du module dans lesquels elles sont définies.

Après avoir utilisé l'option -w, redéfinir une variable de classe produira un avertissement.

L'exemple suivant montre l'utilisation des variables de classe.

Exemple

#!/usr/bin/ruby class Customer @@no_of_customers=0 def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr end def display_details() puts "Customer id #@cust_id" puts "Customer name #@cust_name" puts "Customer address #@cust_addr" end def total_no_of_customers() @@no_of_customers += 1 puts "Total number of customers: #@@no_of_customers" end end #Créer un objet cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") #Appeler la méthode cust1.total_no_of_customers() cust2.total_no_of_customers()

Essayez-le »

Ici, @@no_of_customers est une variable de classe. Cela produira le résultat suivant :

Total number of customers: 1
Total number of customers: 2

Variables locales en Ruby

Les variables locales commencent par une lettre minuscule ou un trait de soulignement _. La portée d'une variable locale s'étend de class, module, def ou do jusqu'au end correspondant, ou de l'accolade ouvrante à l'accolade fermante {}.

Lorsqu'une variable locale non initialisée est appelée, elle est interprétée comme l'appel d'une méthode sans arguments.

L'affectation d'une valeur à une variable locale non initialisée peut également être considérée comme une déclaration de variable. La variable persiste jusqu'à la fin de la portée actuelle. La durée de vie d'une variable locale est déterminée lorsque Ruby analyse le programme.

Dans l'exemple ci-dessus, les variables locales sont id, name et addr.

Constantes en Ruby

Les constantes commencent par une lettre majuscule. Les constantes définies à l'intérieur d'une classe ou d'un module sont accessibles depuis la classe ou le module, tandis que les constantes définies à l'extérieur d'une classe ou d'un module sont accessibles globalement.

Les constantes ne peuvent pas être définies à l'intérieur des méthodes. Référencer une constante non initialisée produit une erreur. Affecter une valeur à une constante déjà initialisée produit un avertissement.

Exemple

#!/usr/bin/ruby # -*- coding: UTF-8 -*- class Example VAR1 = 100 VAR2 = 200 def show puts "La valeur de la première constante est #{VAR1}" puts "La valeur de la deuxième constante est #{VAR2}" end end #Créer un objet object=Example.new() object.show

Essayez-le »

Ici, VAR1 et VAR2 sont des constantes. Cela produira le résultat suivant :

第一个常量的值为 100
第二个常量的值为 200

Pseudo-variables Ruby

Ce sont des variables spéciales qui ressemblent à des variables locales mais se comportent comme des constantes. Vous ne pouvez affecter aucune valeur à ces variables.

  • self:L'objet récepteur de la méthode courante.
  • true:Représente la valeur true.
  • false:Représente la valeur false.
  • nil:Représente la valeur indéfinie.
  • __FILE__:Le nom du fichier source actuel.
  • __LINE__:Le numéro de ligne de la ligne actuelle dans le fichier source.
Autres extensions