English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Variáveis são locais de armazenamento que contêm dados que podem ser usados por qualquer programa.
O Ruby suporta cinco tipos de variáveis.
Geralmente começam com letras minúsculas ou underline: Variáveis (Variable).
Começam com $: Variáveis globais (Global variable).
Começam com @: Variáveis de exemplo (Instance variable).
Começam com @@: Variáveis de classe (Class variable). As variáveis de classe são compartilhadas em toda a cadeia de herança.
Começam com letras maiúsculas: Constantes (Constantes).
Você já teve uma ideia geral dessas variáveis nos capítulos anteriores. Este capítulo explicará detalhadamente esses cinco tipos de variáveis.
As variáveis globais começam com $. O valor de uma variável global não inicializada é nilao usar -A opção w, após isso, gerará um aviso.
Atribuir valores a variáveis globais altera o estado global, portanto, não é recomendado usar variáveis globais.
O exemplo a seguir mostra o uso de variáveis globais.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $global_variable = 10 class Class1 def print_global puts "Variáveis globais no Class1 e é exibido como "#$global_variable" end end class Class2 def print_global puts "Variáveis globais no Class2 e é exibido como "#$global_variable" end end class1obj = Class1.new class1obj.print_global class2obj = Class2.new class2obj.print_global
Aqui, $global_variable é uma variável global. Isso resultará na seguinte saída:
Atenção:No Ruby, você pode acessar o valor de qualquer variável ou constante colocando o caractere # antes dela.
Variáveis globais no Class1 e é exibido como 10 Variáveis globais no Class2 e é exibido como 10
As variáveis de exemplo começam com @. O valor de uma variável de exemplo não inicializada é nilao usar -A opção w, após isso, gerará um aviso.
O exemplo a seguir mostra o uso das variáveis de exemplo.
#!/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 do cliente @cust_id" puts "Nome do cliente @cust_name" puts "Endereço do cliente @cust_addr" end end # Criar objeto cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") # Chama o método cust1.display_details() cust2.display_details()
Aqui, @cust_id, @cust_name e @cust_addr são variáveis de exemplo. Isso resultará na seguinte saída:
ID do cliente 1 Nome do cliente John Endereço do cliente Wisdom Apartments, Ludhiya ID do cliente 2 Nome do cliente Poul Endereço do cliente New Empire road, Khandala
As variáveis de classe começam com @@ e devem ser inicializadas antes de poderem ser usadas em definições de métodos.
Referência a uma variável de classe não inicializada causará um erro. As variáveis de classe podem ser usadas em subclasses ou submódulos do módulo ou classe que as definiu.
ao usar -A opção w, após a sobrecarga da variável de classe, gerará um aviso.
O exemplo a seguir mostra o uso de variáveis 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 "ID do cliente @cust_id" puts "Nome do cliente @cust_name" puts "Endereço do cliente @cust_addr" end def total_no_of_customers() @@no_of_customers += 1 puts "Número total de clientes: #@@no_of_customers" end end # Criar objeto cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") # Chama o método cust1.total_no_of_customers() cust2.total_no_of_customers()
Aqui, @@no_of_customers é uma variável de classe. Isso resultará em:
Número total de clientes: 1 Número total de clientes: 2
Variáveis locais começam com letras minúsculas ou sublinhado _. O escopo das variáveis locais vai de class, module, def ou do até o final correspondente ou do esquerdo ao direito {}.
Quando uma variável local não inicializada é chamada, ela é interpretada como uma chamada de método sem parâmetros.
A atribuição a uma variável local não inicializada também pode ser considerada uma declaração de variável. A variável existirá até o final do domínio atual. A vida útil da variável local é determinada durante a análise do programa Ruby.
Neste exemplo, as variáveis locais são id, name e addr.
Constantes começam com letras maiúsculas. Constantes definidas dentro de classes ou módulos podem ser acessadas internamente, enquanto as definidas fora podem ser acessadas globalmente.
Constantes não podem ser definidas dentro de métodos. A referência a uma constante não inicializada causará um erro. A atribuição a uma constante já inicializada gerará um aviso.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- class Example VAR1 = 100 VAR2 = 200 def show puts "O valor da primeira constante é #{VAR1" puts "O valor da segunda constante é #{VAR2" end end # Criar objeto object=Example.new() object.show
Aqui, VAR1 e VAR2 É uma constante. Isso produz o seguinte resultado:
O valor da primeira constante é 100 O valor da segunda constante é 200
São variáveis especiais que têm a aparência de variáveis locais, mas se comportam como constantes. Você não pode atribuir nenhum valor a essas variáveis.
self: Objeto receptor do método atual.
true: Representa o valor true.
false: Representa o valor false.
nil: Representa o valor undefined.
__FILE__: Nome do arquivo de origem atual.
__LINE__: Número da linha atual no arquivo de origem.