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

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

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

Типы данных Ruby

В этой главе мы представим основные типы данных Ruby.

Ruby поддерживает основные типы данных, включая Number, String, Ranges, Symbols, а также особые значения true, false и nil, а также два важных данных структуры — Array и Hash.

Типы чисел (Number)

Целый тип (Integer)

Целые числа делятся на два типа, если они содержат до 31 бита (четыре байта), то это Fixnum пример. Если больше, то это Bignum пример.

Целые числа варьируются от -230 до 230-1, в этом диапазоне целые числа являются классом Fixnum объекта, когда значение целого больше или равно 2 в 30-й степени ( -262 до 262-1), 自动转换为 Bignum 类型。

Вы можете использовать необязательный префикс перед числом, необязательный индекс базы (0 соответствует восьмеричной, 0x соответствует шестнадцатеричной, 0b соответствует двоичной), за которым следует последовательность цифр. Подчеркивающие знаки в строке чисел игнорируются.

Вы можете получить целое значение ASCII-символа или целое значение последовательности символов, обозначенной вопросительным знаком.

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

123                 # Fixnum 十进制
1_234                # Fixnum 带有下划线的十进制
-500                 # 负的 Fixnum
0377                 # 八进制
0xff                 # 十六进制
0b1011               # 二进制
"a".ord              # "a" 的字符编码
?\n                  # Код кода новой строки (0x0a)
12345678901234567890 # Большие числа
 
#Целые числа Integer. Вот несколько литералов целых чисел 
#Литerral (литерал): значения, числа, bool-значения, строки и т.д., видимые в коде, называются литералами 
#Как, например, 0, 1_000_000, 0xa и т.д. 
a1=0 
 
#Целые числа с разделителем тысяч 
a2=1_000_000 
 
#Другие системы счисления 
a3=0xa 
puts a1,a2 
puts a3 
 
#puts print всегда печатают символы на экран, где puts возвращает символы новой строки 
=begin 
Это комментарий, называемый: вхождением документации 
аналогично C#/**/ 
=end

Тип float

Ruby поддерживает числа с плавающей запятой. Это числа с десятичной точкой. Числа с плавающей запятой являются объектами класса Float является объектом, и может быть любым из следующих.

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

123.4                # Значение с плавающей запятой
1.0e6                # Форма записи научной нотации
4E20                 # Не обязателен
4e+20                # Символ перед индексом
 
#Тип float 
f1=0.0 
f2=2.1 
f3=1000000.1 
puts f3

Арифметические действия

Операторы арифметических действий: +-*/; оператор показателя **

Показатель не обязательно должен быть целым числом, например

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

#Арифметические операции с показателями 
puts 2**(1/4)#Деление 1 на 4 равно 0, затем 2 в степени 0 равно 1 
puts 16**(1/4.0)#Деление 1 на 4.0 равно 0.25 (четверть), затем берем四次ную корень

Тип строки

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

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

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

#!/usr/bin/ruby -w
 
puts 'escape using \\\"';
puts 'That\'s right';

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

escape using "\"
That's right

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

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

#!/usr/bin/ruby -w
 
puts "умножение : #{24*60*60}";

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

умножение : 86400

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

#!/usr/bin/ruby -w
 
name="Ruby" 
puts name 
puts "#{name+",ok"}"

Результат вывода:

Ruby
Ruby,ok

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

В таблице ниже перечислены обратные символы, поддерживаемые Ruby:

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

Для получения дополнительной информации о Ruby строке, пожалуйста, посмотрите Ruby строка (String).

Массив

Лiteral массива определяется в квадратных скобках [] с разделителями запятыми и поддерживает определение диапазонов.

  • (1) доступ к элементам массива через индекс []

  • (2) вставка, удаление и замена элементов через операции присваивания

  • (3) объединение и удаление элементов через символы +, -, и的出现 нового набора

  • (4) добавление элементов в исходные данные через символ <<

  • (5) повторение элементов массива через символ *

  • (6) операции объединения и пересечения через символы | и & (обратите внимание на порядок)

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

#!/usr/bin/ruby
ary = ["fred", 10, 3.14, "Это строка", "последний элемент",]
ary.each do |i|
    puts i
end

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

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

Для получения дополнительной информации о Ruby массиве, пожалуйста, посмотрите Ruby массив (Array).

Тип хэша

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

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

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

#!/usr/bin/ruby
 
hsh = colors = { "red" => 0xf00, "green" => 0x0f0, "blue" => 0x00f }
hsh.each do |key, value|
    print key, " ", value, "\n"
end

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

красный равен 3840
зеленый равен 240
голубой равен 15

Для получения дополнительной информации о Ruby хэше, пожалуйста, посмотрите Ruby хэш (Hash).

Тип области

Область представляет собой интервал.

Область представлена установкой начального значения и конечного значения. Область может быть создана с помощью 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, пожалуйста, посмотрите Область (Range) Ruby.