Переменные — это области памяти, в которых хранятся любые данные, которые будут использоваться любой программой.
Ruby поддерживает пять типов переменных. Вы уже прошли небольшое описание этих переменных в предыдущей главе. Эти пять типов переменных описаны в этой главе.
Ruby Global Variables
Глобальные переменные начинаются с $. Неинициализированные глобальные переменные имеют значение nil и выдают предупреждения с опцией -w.
Присвоение глобальным переменным изменяет глобальный статус. Не рекомендуется использовать глобальные переменные. Они делают программы загадочными.
Вот пример, показывающий использование глобальной переменной.
#!/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
Здесь $ global_variable является глобальной переменной. Это даст следующий результат —
ПРИМЕЧАНИЕ. — В Ruby вы МОЖЕТЕ получить доступ к значению любой переменной или константы, поставив символ хеша (#) непосредственно перед этой переменной или константой.
Global variable in Class1 is 10 Global variable in Class2 is 10
Переменные экземпляра Ruby
Переменные экземпляра начинаются с @. Неинициализированные переменные экземпляра имеют значение nil и выдают предупреждения с опцией -w.
Вот пример, показывающий использование переменных экземпляра.
#!/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()
Здесь @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 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()
Здесь @@ no_of_customers является переменной класса. Это даст следующий результат —
Total number of customers: 1 Total number of customers: 2
Ruby локальные переменные
Локальные переменные начинаются со строчной буквы или _. Область действия локальной переменной варьируется от класса, модуля, def или do до соответствующего конца или от открывающей фигурной скобки блока до закрывающей фигурной скобки {}.
Когда ссылается на неинициализированную локальную переменную, она интерпретируется как вызов метода, который не имеет аргументов.
Присвоение неинициализированным локальным переменным также служит объявлением переменной. Переменные начинают существовать, пока не будет достигнут конец текущей области. Время жизни локальных переменных определяется, когда Ruby анализирует программу.
В приведенном выше примере локальными переменными являются id, name и addr.
Рубиновые Константы
Константы начинаются с заглавной буквы. Константы, определенные в классе или модуле, могут быть доступны из этого класса или модуля, а те, которые определены вне класса или модуля, могут быть доступны глобально.
Константы не могут быть определены в методах. Ссылка на неинициализированную константу приводит к ошибке. Назначение константы, которая уже инициализирована, выдает предупреждение.
#!/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
Здесь VAR1 и VAR2 являются константами. Это даст следующий результат —
Value of first Constant is 100 Value of second Constant is 200
Ruby псевдопеременные
Это специальные переменные, которые имеют вид локальных переменных, но ведут себя как константы. Вы не можете присвоить какое-либо значение этим переменным.
-
self — объект получателя текущего метода.
-
true — значение, представляющее true.
-
false — значение, представляющее false.
-
nil — значение, представляющее неопределенное.
-
__FILE__ — Имя текущего исходного файла.
-
__LINE__ — Текущий номер строки в исходном файле.
self — объект получателя текущего метода.
true — значение, представляющее true.
false — значение, представляющее false.
nil — значение, представляющее неопределенное.
__FILE__ — Имя текущего исходного файла.
__LINE__ — Текущий номер строки в исходном файле.
Ruby Basic Literal
Правила, которые Ruby использует для литералов, просты и интуитивно понятны. Этот раздел объясняет все основные литералы Ruby.
Целые числа
Ruby поддерживает целые числа. Целое число может варьироваться от -2 30 до 2 30-1 или от -2 62 до 2 62-1 . Целые числа в этом диапазоне являются объектами класса Fixnum, а целые числа вне этого диапазона хранятся в объектах класса Bignum .
Вы пишете целые числа с использованием необязательного начального знака, необязательного базового индикатора (0 для восьмеричного, 0x для шестнадцатеричного или 0b для двоичного), за которым следует строка цифр в соответствующем основании. Символы подчеркивания игнорируются в строке цифр.
Вы также можете получить целочисленное значение, соответствующее символу ASCII, или экранировать последовательность, поставив перед ней знак вопроса.
пример
123 # Fixnum decimal 1_234 # Fixnum decimal with underline -500 # Negative Fixnum 0377 # octal 0xff # hexadecimal 0b1011 # binary ?a # character code for 'a' ?\n # code for a newline (0x0a) 12345678901234567890 # Bignum
ПРИМЕЧАНИЕ. — Класс и объекты объясняются в отдельной главе этого руководства.
Плавающие числа
Ruby поддерживает плавающие числа. Они также числа, но с десятичными знаками. Числа с плавающей точкой являются объектами класса Float и могут быть следующими:
пример
123.4 # floating point value 1.0e6 # scientific notation 4E20 # dot not required 4e+20 # sign before exponential
Строковые литералы
Рубиновые строки — это просто последовательности 8-битных байтов, и они являются объектами класса String. Строки в двойных кавычках допускают подстановку и запись с обратной косой чертой, но строки в одинарных кавычках не допускают подстановку и допускают запись с обратной косой чертой только для \\ и \ ‘
пример
#!/usr/bin/ruby -w puts 'escape using "\\"'; puts 'That\'s right';
Это даст следующий результат —
escape using "\" That's right
Вы можете подставить значение любого выражения Ruby в строку, используя последовательность # {expr} . Здесь expr может быть любым выражением ruby.
#!/usr/bin/ruby -w puts "Multiplication Value : #{24*60*60}";
Это даст следующий результат —
Multiplication Value : 86400
Нотация с обратной косой чертой
Ниже приведен список нотаций обратной косой черты, поддерживаемых Ruby —
нотация | Персонаж представлен |
---|---|
\ п | Новая строка (0x0a) |
\р | Возврат каретки (0x0d) |
\ е | Formfeed (0x0c) |
\ б | Backspace (0x08) |
\ а | Белл (0x07) |
\ е | Побег (0x1b) |
\ s | Пробел (0x20) |
\ NNN | Восьмеричное обозначение (n = 0-7) |
\ Хпп | Шестнадцатеричное обозначение (n от 0 до 9, af или AF) |
\ cx, \ Cx | Контроль-х |
\ Mx | Мета-х (c | 0x80) |
\ M- \ Cx | Meta-Control-х |
\Икс | Персонаж х |
Для более подробной информации о Ruby Strings, перейдите через Ruby Strings .
Ruby Arrays
Литералы Ruby Array создаются путем размещения разделенных запятыми серий ссылок на объекты между квадратными скобками. Завершающая запятая игнорируется.
пример
#!/usr/bin/ruby ary = [ "fred", 10, 3.14, "This is a string", "last element", ] ary.each do |i| puts i end
Это даст следующий результат —
fred 10 3.14 This is a string last element
Для более подробной информации о Ruby Arrays, перейдите через Ruby Arrays .
Рубиновые Хэши
Литеральный хэш Ruby создается путем размещения списка пар ключ / значение между фигурными скобками, с запятой или последовательностью => между ключом и значением. Завершающая запятая игнорируется.
пример
#!/usr/bin/ruby hsh = colors = { "red" => 0xf00, "green" => 0x0f0, "blue" => 0x00f } hsh.each do |key, value| print key, " is ", value, "\n" end
Это даст следующий результат —
red is 3840 green is 240 blue is 15
Для более подробной информации о Ruby Hashes, перейдите через Ruby Hashes .
Рубиновые диапазоны
Диапазон представляет интервал, который представляет собой набор значений с началом и концом. Диапазоны могут быть созданы с использованием литералов s..e и s … e или Range.new.
Диапазоны, построенные с использованием .., запускаются от начала до конца включительно. Те, которые созданы с использованием … исключают конечное значение. При использовании в качестве итератора диапазоны возвращают каждое значение в последовательности.
Диапазон (1..5) означает, что он включает в себя 1, 2, 3, 4, 5 значений, а диапазон (1 … 5) означает, что он включает в себя 1, 2, 3, 4 значения.
пример
#!/usr/bin/ruby (10..15).each do |n| print n, ' ' end
Это даст следующий результат —
10 11 12 13 14 15
Для более подробной информации о Ruby Ranges, пройдите через Ruby Ranges .