Ruby Переменные
Переменная — это место хранения, в котором хранятся любые данные, которые могут использоваться любой программой.
Ruby поддерживает пять типов переменных.
- Обычно начинаются со строчных букв или символов подчёркивания: variable (Variable).
$$ в начале: глобальная переменная (Global variable).@@ в начале: переменная экземпляра (Instance variable).@@@@ в начале: переменная класса (Class variable). Переменные класса являются общими для всей цепочки наследования.- Начинается с заглавной буквы: константа (Constant).
Вы уже узнали об этих переменных в предыдущих главах. В этой главе подробно объясняются эти пять типов переменных.
Глобальные переменные Ruby
Значение неинициализированной глобальной переменной — nilnil, а использование параметра -w приведёт к предупреждению.
Присваивание значения глобальной переменной изменяет глобальное состояние, поэтому глобальные переменные не рекомендуются.
В следующем примере показано использование глобальных переменных.
Пример
Попробуйте »
Здесь $global_variable — глобальная переменная. Это даст следующий результат:
Примечание:В Ruby можно получить доступ к значению любой переменной или константы, поставив символ # перед переменной или константой.
全局变量在 Class1 中输出为 10 全局变量在 Class2 中输出为 10
Переменные экземпляра Ruby
Переменные экземпляра начинаются с @. Значение неинициализированной переменной экземпляра — nilnil, а использование опции -w приведёт к предупреждению.
В следующем примере показано использование переменных экземпляра.
Пример
Попробуйте »
Здесь @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 повторное определение переменной класса вызовет предупреждение.
В следующем примере показано использование переменных класса.
Пример
Попробуйте »
Здесь @@no_of_customers — это переменная класса. Это даст следующий результат:
Total number of customers: 1 Total number of customers: 2
Локальные переменные Ruby
Локальные переменные начинаются со строчной буквы или знака подчеркивания _. Область видимости локальной переменной — от class, module, def или do до соответствующего end, либо от левой фигурной скобки до правой фигурной скобки {}.
Когда вызывается неинициализированная локальная переменная, это интерпретируется как вызов метода без аргументов.
Присваивание значения неинициализированной локальной переменной также можно рассматривать как объявление переменной. Переменная сохраняется до конца текущей области видимости. Время жизни локальной переменной определяется при синтаксическом разборе программы Ruby.
В приведенном выше примере локальные переменные — это id, name и addr.
Константы Ruby
Константы начинаются с заглавной буквы. Константы, определенные внутри класса или модуля, доступны изнутри класса или модуля, а константы, определенные вне класса или модуля, доступны глобально.
Константы нельзя определять внутри методов. Ссылка на неинициализированную константу вызывает ошибку. Присваивание значения уже инициализированной константе вызывает предупреждение.
Пример
Попробуйте »
Здесь VAR1 и VAR2 — константы. Это даст следующий результат:
第一个常量的值为 100 第二个常量的值为 200
Псевдопеременные Ruby
Это специальные переменные, которые выглядят как локальные переменные, но ведут себя как константы. Вы не можете присвоить этим переменным никакого значения.
- self:Объект-получатель текущего метода.
- true:Представляет значение true.
- false:Представляет значение false.
- nil:Представляет неопределённое значение.
- __FILE__:Имя текущего исходного файла.
- __LINE__:Номер текущей строки в исходном файле.