Variables rubis
Une variable est un emplacement de stockage qui contient toutes les données pouvant être utilisées par n'importe quel programme.
Ruby prend en charge cinq types de variables.
Lettres généralement minuscules, commençant par un trait de soulignement : Variable. Commençant par
$
: Variable globale. Commençant par@
: variable d'instance.@@
commence par : Variable de classe Les variables de classe sont partagées tout au long de la chaîne d'héritageComme par des lettres majuscules : constante ( Constante).
Vous avez déjà grossièrement compris ces variables dans les chapitres précédents. Ce chapitre vous expliquera ces cinq types de variables en détail.
Variables globales Ruby
Les variables globales commencent par $. La valeur d'une variable globale non initialisée est nil, ce qui générera un avertissement après avoir utilisé l'option -w.
L'attribution de valeurs aux variables globales modifiera l'état global, il n'est donc pas recommandé d'utiliser des variables globales.
L'exemple suivant montre l'utilisation de variables globales.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $global_variable = 10 class Class1 def print_global puts "全局变量在 Class1 中输出为 #$global_variable" end end class Class2 def print_global puts "全局变量在 Class2 中输出为 #$global_variable" end end class1obj = Class1.new class1obj.print_global class2obj = Class2.new class2obj.print_global
Ici, $global_variable est la variable globale. Cela produira le résultat suivant :
Remarque : Dans Ruby, vous pouvez accéder à la valeur de n'importe quelle variable ou constante en plaçant le caractère # devant la variable ou la constante.
全局变量在 Class1 中输出为 10 全局变量在 Class2 中输出为 10
Variables d'instance Ruby
Les variables d'instance commencent par @. Les variables d'instance non initialisées ont la valeur nil, ce qui générera un avertissement après avoir utilisé l'option -w.
L'exemple suivant montre l'utilisation de variables d'instance.
#!/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 # 创建对象 cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") # 调用方法 cust1.display_details() cust2.display_details()
Ici, @cust_id, @cust_name et @cust_addr sont des variables d'instance. Cela produira les résultats suivants :
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 une définition de méthode.
Référencer une variable de classe non initialisée générera une erreur. Les variables de classe peuvent être partagées entre des sous-classes ou des sous-modules de la classe ou du module dans lequel elles sont définies.
La surcharge des variables de classe produit un avertissement après avoir utilisé l'option -w.
L'exemple suivant montre l'utilisation des variables de classe.
#!/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 # 创建对象 cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") # 调用方法 cust1.total_no_of_customers() cust2.total_no_of_customers()
Ici, @@no_of_customers est une variable de classe. Cela produira les résultats suivants :
Total number of customers: 1 Total number of customers: 2
Variables locales Ruby
Les variables locales commencent par une lettre minuscule ou un trait de soulignement _. Les variables locales s'étendent de la classe, du module, def ou do à la fin correspondante ou de l'accolade ouvrante à l'accolade fermante {}.
Lorsqu'une variable locale non initialisée est appelée, elle est interprétée comme appelant une méthode sans paramètres.
L'attribution de valeurs à des variables locales non initialisées peut également être considérée comme des déclarations de variables. La variable existera jusqu'à la fin de la portée actuelle. La durée de vie des variables locales est déterminée lorsque Ruby analyse le programme.
Dans l'exemple ci-dessus, les variables locales sont id, name et addr.
Constantes Ruby
Les constantes commencent par une lettre majuscule. Les constantes définies dans une classe ou un module sont accessibles depuis l'intérieur de la classe ou du module, et les constantes définies en dehors de la classe ou du module sont accessibles globalement.
La constante ne peut pas être définie dans une méthode. Faire référence à une constante non initialisée générera une erreur. L'attribution d'une valeur à une constante initialisée générera un avertissement.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- class Example VAR1 = 100 VAR2 = 200 def show puts "第一个常量的值为 #{VAR1}" puts "第二个常量的值为 #{VAR2}" end end # 创建对象 object=Example.new() object.show
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 ont l'apparence de variables locales mais se comportent comme des constantes. Vous ne pouvez attribuer aucune valeur à ces variables.
self : L'objet récepteur de la méthode actuelle.
true : représente la valeur de true.
false : représente la valeur de false.
nil : représente la valeur d'undefined.
__FILE__ : Le nom du fichier source actuel.
__LINE__ : Le numéro de la ligne actuelle dans le fichier source.