Поиск по сайту:
То, что кажется странным, редко остается необъясненным (Г. Лихтенберг).

Ruby — переменные, константы и литералы

[wtr-time]
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
16.06.2018
Язык программирования Ruby

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

Ruby поддерживает пять типов переменных. Вы уже прошли небольшое описание этих переменных в предыдущей главе. Эти пять типов переменных описаны в этой главе.

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

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

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

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

#!/usr/bin/ruby

$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
   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

# Создание объектов
cust1 = Customer.new("1", "AndreyEx", "Home, Krasnodar")
cust2 = Customer.new("2", "Max", "Works, Rostov")

# Вызов методов
cust1.display_details()
cust2.display_details()

 

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

Customer id 1
Customer name AndreYEx
Customer address Home, Krasnodar
Customer id 2
Customer name Max
Customer address Works, Rostov

Переменные класса 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

# Создание объектов
cust1 = Customer.new("1", "AndreyEx", "Home, Krasnodar")
cust2 = Customer.new("2", "Max", "Works, Rostov")

# CВызов методов
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 или до соответствующего конца или от скобки открытия блока до его близкой привязки {}.

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

Назначение неинициализированных локальных переменных также служит объявлением переменной. Переменные начинают существовать до тех пор, пока не будет достигнут конец текущей области. Время жизни локальных переменных определяется, когда Ruby анализирует программу.

В приведенном выше примере локальными переменными являются id, name и addr.

Константы Ruby

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

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

#!/usr/bin/ruby

class Example
   VAR1 = 100
   VAR2 = 200
   def show
      puts "Значение первой константы есть #{VAR1}"
      puts "Значение второй константы есть #{VAR2}"
   end
end

# Create Objects
object = Example.new()
object.show

 

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

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

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

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

  • self — Объект приемника текущего метода.
  • true — значение, представляющее true.
  • false — значение, представляющее false.
  • nil — значение, представляющее неопределенный.
  • __FILE__ — имя текущего исходного файла.
  • __LINE__ — номер текущей строки в исходном файле.

Основные литералы в Ruby

Правила, используемые 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                # значение с плавающей запятой 
1.0e6                # экспоненциальное представление
4E20                 # точка не требуется
4e+20                # знак перед экспоненциальным

 

Строковые литералы

Строки Ruby — это просто последовательности 8-битных байтов, и они являются объектами класса String. Строки с двойными кавычками допускают замещение и обратную косую черту, но строки с одним кавычком не позволяют замену и позволяют обозначать обратную косую черту только для \\ и \

Пример

#!/usr/bin/ruby -w

puts 'пробел с помощью "\\"';
puts 'That\'s right';

 

Это приведет к следующему результату:

пробел с помощью "\"
That's right

 

Вы можете подставить значение любого выражения Ruby в строку, используя последовательность # {expr} . Здесь expr может быть любым выражением ruby.

#!/usr/bin/ruby -w

puts "Значение Умножения : #{24*60*60}";

 

Это приведет к следующему результату:

Значение Умножения : 86400

Обозначения с обратной косой чертой

Ниже приведен список обозначений Backslash, поддерживаемых Ruby:

\nНовая линия (0x0a)
\rВозврат каретки (0x0d)
\fПодача бумаги (0x0c)
\bклавиша Backspace (0x08)
\aзвонок (0x07)
\eEscape (0x1b)
\sПробел (0x20)
\nnnВосьмеричная запись (n being 0-7)
\xnnШестнадцатеричное представление (n being 0-9, a-f, or A-F)
\cx, \C-xControl-x
\M-xMeta-x (c | 0x80)
\M-\C-xMeta-Control-x
\xСимвол x

Массивы в Ruby

Для более подробной информации о Ruby Strings, пройдите на страницу Ruby. Строки.

Литералы массивов в Ruby создаются путем размещения разделенных запятыми рядов ссылок на объекты между квадратными скобками. Задняя запятая игнорируется.

Пример

#!/usr/bin/ruby

ary = [  "AndreyEx", 10, 3.14, "Это строка", "последний элемент", ]
ary.each do |i|
   puts i
end

 

Это приведет к следующему результату:

AndreyEx
10
3.14
Это строка
последний элемент

 

Для более подробной информации о Ruby Arrays, пройдите на страницу Ruby. Массивы.

Хеши в Ruby

Буквальный Хэш в Ruby создается путем размещения списка пар ключ / значение между фигурными скобками с запятой или последовательностью => между ключом и значением. Задняя запятая игнорируется.

Пример

#!/usr/bin/ruby

hsh = colors = { "красный" => 0xf00, "зеленый" => 0x0f0, "синий" => 0x00f }
hsh.each do |key, value|
   print key, " есть ", value, "\n"
end

 

Это приведет к следующему результату:

красный есть 3840
зеленый есть 240
синий есть 15

 

Для более подробной информации о Ruby Hashes, пройдите на страницу Ruby. Хэши.

Диапазоны в Ruby

Диапазон представляет собой интервал, который представляет собой набор значений с началом и концом. Диапазоны могут быть построены с использованием литералов 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. Диапазоны.

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Спасибо!

Теперь редакторы в курсе.