Hay diferentes tipos de variables en Ruby:
- Variables locales
- Variables de instancia
- Variables de clase
- Variables globales
Cada variable en Ruby se declara usando un carácter especial al comienzo del nombre de la variable que se menciona en la siguiente tabla:
Símbolo | Tipo de variable |
---|---|
[az] o _ | Variable local |
@ | Instancia variable |
@@ | variable de clase |
ps | Variable global |
Variables locales: el nombre de una variable local siempre comienza con una letra minúscula (az) o un guión bajo (_) . Estas variables son locales para la construcción del código en el que se declaran. Una variable local solo es accesible dentro del bloque de su inicialización. Las variables locales no están disponibles fuera del método. No es necesario inicializar las variables locales.
Ejemplo:
age = 10 _Age = 20
Variables de instancia: el nombre de una variable de instancia siempre comienza con un signo @ . Son similares a las variables de clase, pero sus valores son locales para instancias específicas de un objeto. Las variables de instancia están disponibles en todos los métodos para cualquier instancia u objeto especificado, es decir, las variables de instancia pueden cambiar de un objeto a otro. No es necesario inicializar las variables de instancia y la variable de instancia no inicializada siempre contiene un valor nulo .
Ejemplo:
#!/usr/bin/ruby # Ruby program to illustrate # the Instance Variables class Customer def initialize(id, name, addr) # Instance Variables @cust_id = id @cust_name = name @cust_addr = addr end # displaying result def display_details() puts "Customer id #@cust_id" puts "Customer name #@cust_name" puts "Customer address #@cust_addr" end end # Create Objects cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2 = Customer.new("2", "Poul", "New Empire road, Khandala") # Call Methods cust1.display_details() cust2.display_details()
Producción:
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 clase: el nombre de una variable de clase siempre comienza con el signo @@ . Está disponible en diferentes objetos. Una variable de clase pertenece a la clase y es una característica de una clase. Deben inicializarse antes de su uso. Otra forma de pensar en las variables de clase es como variables globales dentro del contexto de una sola clase. Una variable de clase es compartida por todos los descendientes de la clase. Una variable de clase no inicializada dará como resultado un error.
Ejemplo:
#!/usr/bin/ruby # Ruby program to illustrate # the Class Variables class Customer # class variable @@no_of_customers = 0 def initialize(id, name, addr) # An instance Variable @cust_id = id @cust_name = name @cust_addr = addr end # displaying result def display_details() puts "Customer id #@cust_id" puts "Customer name #@cust_name" puts "Customer address #@cust_addr" end def total_no_of_customers() # class variable @@no_of_customers += 1 puts "Total number of customers: #@@no_of_customers" end end # Create Objects cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2 = Customer.new("2", "Poul", "New Empire road, Khandala") # Call Methods cust1.display_details() cust1.total_no_of_customers() cust2.display_details() cust2.total_no_of_customers()
Producción:
Customer id 1 Customer name John Customer address Wisdom Apartments, Ludhiya Total number of customers: 1 Customer id 2 Customer name Poul Customer address New Empire road, Khandala Total number of customers: 2
Variables globales: el nombre de una variable global siempre comienza con $ . Las variables de clase no están disponibles entre clases. Si desea tener una sola variable, que esté disponible en todas las clases, debe definir una variable global. Su alcance es global, significa que se puede acceder desde cualquier parte de un programa. De forma predeterminada, una variable global no inicializada tiene un valor nulo y su uso puede hacer que los programas sean crípticos y complejos.
Ejemplo:
#!/usr/bin/ruby # Ruby program to illustrate # the Global Variables #!/usr/bin/ruby # global variable $global_variable = 10 class Class1 def print_global puts "Global variable in Class1 is #$global_variable" end end class Class2 def print_global puts "Global variable in Class2 is #$global_variable" end end class1obj = Class1.new class1obj.print_global class2obj = Class2.new class2obj.print_global
Producción:
Global variable in Class1 is 10 Global variable in Class2 is 10
Publicación traducida automáticamente
Artículo escrito por Shivi_Aggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA