Font: Tutorials Point
1. Variables globals
Les variables globals comencen per $. Les variables globals no inicialitzades tenen el valor nil i produeixen advertències amb l’opció -w.
L’assignació a variables globals altera l’estat global. No es recomana utilitzar variables globals. Fan críptics els programes.
Aquí teniu un exemple que mostra l’ús de la variable global.
#!/usr/bin/ruby
$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
Output
Global variable in Class1 is 10
Global variable in Class2 is 10
2. Variables d’instància
Les variables d’instància comencen per @. Les variables d’instància no inicialitzades tenen el valor nil i produeixen advertències amb l’opció -w.
Aquí teniu un exemple que mostra l’ús de variables d’instància.
#!/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
# 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()
Output
Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala
3. Variables de Classe
Les variables de classe comencen per @@
i deuen inicialitzar-se abans de ser usades en les definicions.
#!/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
# Create Objects
cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")
# Call Methods
cust1.total_no_of_customers()
cust2.total_no_of_customers()
Output
Total number of customers: 1
Total number of customers: 2
4. Variables Locals
Les variables locals comencen amb una lletra minúscula o _. L’abast d’una variable local oscil·la entre la classe, el mòdul, la def, o la realització a l’extrem corresponent o de l’obertura d’un bloc al seu tancament {}.
Quan es fa referència a una variable local no inicialitzada, s’interpreta com una trucada a un mètode que no té arguments.
L’assignació a variables locals no inicialitzades també serveix de declaració de variable. Les variables comencen a existir fins que s’aconsegueix el final de l’abast actual. La vida útil de les variables locals es determina quan Ruby analitza el programa.
5. Constants
Les constants comencen amb una lletra majúscula. Les constants definides dins d’una classe o mòdul es poden accedir des d’aquesta classe o mòdul, i les que es defineixen fora d’una classe o mòdul es poden accedir globalment.
Les constants poden no estar definides dins dels mètodes. La referència a una constant no inicialitzada produeix un error. Fer una assignació a una constant ja inicialitzada produeix un avís.
#!/usr/bin/ruby
class Example
VAR1 = 100
VAR2 = 200
def show
puts "Value of first Constant is #{VAR1}"
puts "Value of second Constant is #{VAR2}"
end
end
# Create Objects
object = Example.new()
object.show
Output
Value of first Constant is 100
Value of second Constant is 200
6. Pseudo-Variables
Són variables especials que tenen l’aparença de variables locals però es comporten com a constants. No podeu assignar cap valor a aquestes variables.
auto
- L’objecte receptor del mètode actual.true
- Valor que representa veritable.false
- Valor que representa fals.nil
- Valor que representa sense definir.__FILE__
- El nom del fitxer font actual.__LINE__
- El número de línia actual al fitxer font.