English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby базовый учебник

Ruby продвинутый учебник

Переменные Ruby

Переменные - это места хранения данных, которые могут быть использованы любым программным обеспечением.

Ruby поддерживает五种类型的变量。

  • Обычно lowercase и подчеркивания на начальном месте: переменные (Variable).

  • $ на начальном месте: глобальные переменные (Global variable).

  • @ на начальном месте: примерные переменные (Instance variable).

  • @@ на начальном месте: классовые переменные (Class variable) классовые переменные.shared throughout the inheritance chain

  • Начальные заглавные буквы: константы (Constant).

Вы уже大致了解了这些变量在前面的章节中,本章节将为您详细讲解这五种类型的变量。

Ruby глобальные переменные

Глобальные переменные начинаются с $. Значение неинициализированной глобальной переменной равно nilИспользование опции -w после этого вызывает предупреждение.

Ассигнование значения глобальной переменной изменяет глобальное состояние, поэтому не рекомендуется использовать глобальные переменные.

Ниже приведен пример использования глобальных переменных.

Онлайн пример

#!/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

Здесь $global_variable является глобальной переменной. Это приведет к следующим результатам:

Примечание:В Ruby вы можете получить доступ к значению любой переменной или константы, поместив символ # перед ней.

Глобальная переменная в Class1 выведена как 10
Глобальная переменная в Class2 выведена как 10

Примерные переменные Ruby

Примерные переменные начинаются с @. Значение неинициализированной примерной переменной равно nilИспользование опции -w после этого вызывает предупреждение.

Ниже приведен пример использования примерных переменных.

Онлайн пример

#!/usr/bin/ruby
 
class Customer
   initialize(id, name, addr)
      @cust_id = id
      @cust_name = name
      @cust_addr = addr
   end
   def display_details()
      puts "ID клиента @cust_id"
      puts "Имя клиента @cust_name"
      puts "Адрес клиента @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()

Здесь @cust_id, @cust_name и @cust_addr являются примерными переменными. Это приведет к следующим результатам:

Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala

Классовые переменные Ruby

Классовые переменные начинаются с @@ и должны быть инициализированы перед использованием в определении методов.

Упоминание неинициализированной классовой переменной вызывает ошибку. Классовые переменные могут быть использованы совместно в подклассах или подмодулях класса или модуля, в котором они определены.

Использование опции -w после этого вызывает предупреждение.

Ниже приведен пример использования классовых переменных.

Онлайн пример

#!/usr/bin/ruby
 
class Customer
   @@no_of_customers=0
   initialize(id, name, addr)
      @cust_id = id
      @cust_name = name
      @cust_addr = addr
   end
   def display_details()
      puts "ID клиента @cust_id"
      puts "Имя клиента @cust_name"
      puts "Адрес клиента @cust_addr"
    end
    def total_no_of_customers()
       @@no_of_customers += 1
       puts "Общее количество клиентов: #@@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()

Здесь @@no_of_customers является классовой переменной. Это приведет к следующим результатам:

Общее количество клиентов: 1
Общее количество клиентов: 2

Локальные переменные Ruby

Локальные переменные начинаются с малой буквы или подчеркивания _. Область действия локальной переменной начинается от class, module, def или do до соответствующего конца или от левой скобки {} до правой.

Когда вызывается неинициализированная локальная переменная, она интерпретируется как вызов метода без параметров.

Assigning a value to an uninitialized local variable также может быть интерпретировано как переменная声明. Переменная будет существовать до тех пор, пока текущий домен не закончится. Жизненный цикл локальной переменной определяет Ruby при парсинге программы.

В данном примере локальные переменные - это id, name и addr.

Константы Ruby

Константы начинаются с заглавной буквы. Константы, определенные внутри класса или модуля, могут быть доступы изнутри класса или модуля, а константы, определенные вне класса или модуля, могут быть доступны глобально.

Константы не могут быть определены внутри метода. Указание неинициализированной константы приведет к ошибке. Assigning a value to an already initialized constant会产生警告。

Онлайн пример

#!/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

Здесь VAR1 и VAR2 являются константами. Это приведет к следующим результатам:

Значение первой константы равно 100
Значение второй константы равно 200

Псевдопеременные Ruby

Это особые переменные, которые имеют вид локальных переменных, но ведут себя как константы. Вы не можете присвоить этим переменным任何 значение.

  • self: Объект受体 текущего метода.

  • true: Значение true.

  • false: Значение false.

  • nil: Значение undefined.

  • __FILE__: Имя текущего исходного файла.

  • __LINE__: Номер строки в исходном файле.