Ruby
Теория: Типы данных Ruby
Большая часть типов данных в Ruby работает аналогично типам в других языках. Это относится к строкам, числам или булевым значениям:
Роль null в ruby играет nil. Такое название традиционно используется в Smalltalk и семействе Lisp-языков для обозначения концепции «ничего». В остальном всё очень похоже.
Тип Range используется для задания непрерывного диапазона чисел. Встречается не так часто, но бывает удобен, особенно при работе с датами в библиотеках.
Массивы в Ruby, как и в любом другом динамическом языке, тоже динамические. Их можно изменять, уменьшать и увеличивать прямо в процессе работы:
Тип данных Hash хотя и называется необычно, по сути является обычным хранилищем key-value пар. В JavaScript для этого используются объекты, в PHP — ассоциативные массивы, а в Python — словари.
Кроме стандартных типов Ruby добавляет довольно необычный тип, называемый символом. Подобный тип есть во многих языках, включая Erlang (атом), Clojure (кейворд) и JavaScript (символ). Пример:
Символ очень похож на строку, но он представлен в памяти в единственном экземпляре — в отличие от строк, которые создаются каждый раз заново. Это если говорить про техническую сторону. На практике символ удобен там, где строка выражает саму себя. Обычно там, где в других языках создают константы, в которые записаны строки с именем этой константы, в Ruby просто используют символ. По большому счёту символ не является чем-то жизненно необходимым — он немного сокращает количество кода и местами чуть удобнее в использовании. В остальном по смыслу — это та же строка.
Символы — это такая концепция, которая «заходит» исключительно на практике. Чем больше примеров будет перед глазами, тем быстрее получится использовать этот тип по назначению.
Для проверки типа в каждом объекте присутствует метод is_a?:

