English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Las variables son ubicaciones de almacenamiento que contienen cualquier tipo de datos que puedan ser utilizados por cualquier programa.
Ruby admite cinco tipos de variables.
Generalmente con minúsculas o guiones al inicio: Variable (Variable).
Con $ al inicio: Variable global (Global variable).
Con @ al inicio: Variables de ejemplo (Instance variable).
Con @@ al inicio: Variables de clase (Class variable). Las variables de clase son compartidas a lo largo de toda la cadena de herencia.
Con mayúsculas al inicio: Constantes (Constant).
Usted ha obtenido una idea general de estos tipos de variables en los capítulos anteriores. En este capítulo, se le explicará en detalle estos cinco tipos de variables.
Las variables globales comienzan con $. El valor de una variable global no inicializada es nilal usar -Después de la opción w, se producirá una advertencia.
Asignar valores a las variables globales cambia el estado global, por lo que no se recomienda su uso.
El siguiente ejemplo muestra el uso de las variables globales.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $global_variable = 10 class Class1 def print_global puts "Las variables globales en Class1 se imprime como "#$global_variable" end end class Class2 def print_global puts "Las variables globales en Class2 se imprime como "#$global_variable" end end class1obj = Class1.new class1obj.print_global class2obj = Class2.new class2obj.print_global
Aquí, $global_variable es una variable global. Esto produce el siguiente resultado:
Nota:En Ruby, puede acceder al valor de cualquier variable o constante colocando el carácter # delante de la variable o constante.
Las variables globales en Class1 se imprime como 10 Las variables globales en Class2 se imprime como 10
Las variables de ejemplo comienzan con @. El valor de una variable de ejemplo no inicializada es nilal usar -Después de la opción w, se producirá una advertencia.
El siguiente ejemplo muestra el uso de las variables de ejemplo.
#!/usr/bin/ruby class Customer def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr end def display_details() puts "ID del cliente @cust_id" puts "Nombre del cliente @cust_name" puts "Dirección del cliente @cust_addr" end end # Crear objeto cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") # Llamar al método cust1.display_details() cust2.display_details()
Aquí, @cust_id, @cust_name y @cust_addr son variables de ejemplo. Esto produce el siguiente resultado:
ID del cliente 1 Nombre del cliente John Dirección del cliente Wisdom Apartments, Ludhiya ID del cliente 2 Nombre del cliente Poul Dirección del cliente New Empire road, Khandala
Las variables de clase comienzan con @@ y deben inicializarse antes de poder utilizarse en la definición de métodos.
Se produce un error al referenciar una variable de clase no inicializada. Las variables de clase pueden ser utilizadas de manera compartida en subclases o submódulos del clase o módulo en el que se definen.
Al usar -Después de la opción w, sobrecargar una variable de clase produce una advertencia.
El siguiente ejemplo muestra el uso de variables de clase.
#!/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 "ID del cliente @cust_id" puts "Nombre del cliente @cust_name" puts "Dirección del cliente @cust_addr" end def total_no_of_customers() @@no_of_customers += 1 puts "Número total de clientes: #@@no_of_customers" end end # Crear objeto cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") # Llamar al método cust1.total_no_of_customers() cust2.total_no_of_customers()
Aquí, @@no_of_customers es una variable de clase. Esto produce el siguiente resultado:
Número total de clientes: 1 Número total de clientes: 2
Las variables locales comienzan con minúsculas o guión bajo _. El ámbito de las variables locales se extiende desde class, module, def o do hasta el final correspondiente o desde el corchete izquierdo {} hasta el derecho {}.
Cuando se llama a una variable local no inicializada, se interpreta como una llamada a un método sin parámetros.
La asignación de un valor a una variable local no inicializada también se puede considerar como una declaración de variable. La variable existirá hasta que finalice el ámbito actual. La vida útil de las variables locales se determina durante la parsing del programa Ruby.
En el ejemplo anterior, las variables locales son id, name y addr.
Las constantes comienzan con mayúsculas. Las constantes definidas dentro de una clase o módulo pueden accederse desde el interior de la clase o módulo, mientras que las constantes definidas fuera de una clase o módulo pueden accederse globalmente.
Las constantes no pueden definirse dentro de métodos. La asignación de una constante no inicializada producirá un error. La asignación de un valor a una constante ya inicializada producirá una advertencia.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- class Example VAR1 = 100 VAR2 = 200 def show puts "El valor de la primera constante es #{VAR1" puts "El valor de la segunda constante es #{VAR2" end end # Crear objeto object=Example.new() object.show
Aquí, VAR1 y VAR2 Es una constante. Esto produce el siguiente resultado:
El valor de la primera constante es 100 El valor de la segunda constante es 200
Son variables especiales que tienen la apariencia de variables locales, pero actúan como constantes. No puedes asignarles ningún valor.
self: Objeto receptor del método actual.
true: Representa el valor de true.
false: Representa el valor de false.
nil: Representa el valor de undefined.
__FILE__: Nombre del archivo de origen actual.
__LINE__: Número de línea actual en el archivo de origen.