Базовые элементы Ruby
Доброе пожаловать в базовые элементы Ruby Building! Вы уже узнали некоторые основные элементы Ruby в Основах веб-разработки (если нет, то вернитесь и сначала пройдите тот этап), к этому моменту уже следует знать про переменные, типы данных, строки и методы.
В этом уроке вы пойдете дальше и глубже чем раньше, так что не думайте, что удастся «проскочить». Первые два урока охватывают большую часть материала всего курса по Ruby, так что если вы готовы - вперед!
Пункты для размышления
Посмотрите эти пункты сейчас, а затем с их помощью проверьте себя после выполнения задания.
Внимание: мы рекомендуем пробежать глазами по списку, сделать задание и потом проверить себя, сможете ли вы ответить на все эти вопросы.
Числа, операторы и выражения
- Какая разница между
Integer
иFloat
? - Почему стоит быть осторожным при конвертировании
Integer
вFloat
и наоборот? - Какая разница между
=
,==
и===
? - Как возводить в степень в Ruby?
- Что такое
range
? - Как создать диапазон (range)?
- Какая разница между
(1..3)
и(1…3)
? - Какими тремя способами создать диапазон (range)?
- Какая разница между
Строки
- Какая разница между двойными и одиночными кавычками?
- Что такое интерполяция строки?
- Что такое управляющие символы в Ruby?
- Что такое разрыв строки?
- Как сделать другие объекты строкой?
- Как объединять строки?
- Как получить доступ к отдельному символу в строке или к подстроке?
- Как разделить строки на массивы?
- Что общего между строками и массивами?
- Как получить и «очистить» ввод строки от пользователя в командной строке?
- Что значит «изменяемость строк» и почему оно имеет значение?
- Что такое символ?
- Чем символ отличается от строки?
- Что такое регулярное выражение (RegEx)?
- Как выровнять строку по центру или правому краю?
Массивы
- Какие есть три способа создать массив?
- Как заполнить массив значениями по умолчанию?
- Как получать доступ к элементам массива?
- Как получать доступ к группе элементов массива?
- Как изменять элементы массива?
- Как объединить массивы
- Как найти элементы в одном массиве, которых нет в другом массиве?
- Как найти значения в обоих массивах? (прим. пер. наверное имеются ввиду элементы которые присутствуют одновременно в обоих массивах)
- Какая разница между
push/pop
иshift/unshift
? - Что делает оператор
<<
(shovel)? - В чем отличие между
> arr.pop
и>arr[-1]
? - Чем отличается
<<
илиpush
одного массива в другой от простого сложения двух массивов? - Как удалять элементы массива?
- Почему стоит быть осторожными при удалении элементов массива?
- Как переводить массивы в строки?
- Как переводить другие типы данных в массивы?
- Как выяснить содержит ли массив заданное значение?
- Как найти наибольший элемент в массиве?
- Как найти наименьший элемент в массиве?
- Как удалить дубликаты из массива?
- Как узнать размер массива?
- Как упорядочить массив?
- Какие есть соглашения по именованию массивов?
- Что хранить в массивах?
Хеши
- Что такое хеш?
- Что такое ключи и значения хеша?
- Чем похожи хеш и массив?
- Чем хеш отличается от массива?
- Какие есть три способа создать хеш?
- Что такое «рокет-хеш»?
- Как получить доступ к элементу хеша?
- Как изменить данные в хеше?
- Какие данные удобно хранить в хеше?
- Что такое хеши опций?
- Как удалять данных из хеша?
- Как складывать хеши?
- Как получить список ключей или значений хеша?
- Как узнать содержит ли хеш ключ или значение?
- Что такое множество?
Дата и время
- Как получить текущее время и дату?
- Как найти только Год? Месяц? Час? Секунду? День недели?
- Как создать объект
Time
для даты 12/25/2013? - Как найти сколько дней прошло между двумя
Time’s
? - Какая разница между UTC, GMT и локальным временем?
- Как узнать сколько времени было 100 секунд назад? 10 дней назад?
Прочий полезный материал
- Что такое
nil
? - Как проверить является ли что-нибудь
nil
? - Какая разница между
nil
,blank
иempty
? - Являются ли следующие объекты
nil
илиempty
?" "
,""
,[]
,[""]
,{}
- Чем отличаются друг от друга
puts
,p
иprint
? - Что такое параллельное присваивание?
- Какой самый простой способ поменять значения двух переменных?
- Что такое
Задание
- Вы должны уже закончить курс Learn to Program начатый в Основах веб-разработки.
- Завершить секцию Введение в Ruby на Codeacademy из их Ruby трека
- Завершить проект Codeacademy введение в Ruby ("Putting the Form in Formatter")
- Прочитать вторую главу Beginning Ruby
Programming == Joy: A Whistle Stop Tour of Ruby and Object Orientation
- Прочитать третью главу Beginnig Ruby
Ruby's Building Blocks: Data, Expressions, and Flow Control
страницы 31-50 (только раздел про Числа и Выражения, а также раздел Текст и Строки) - Просмотреть статью Ruby Date and Time explanation from TutorialsPoint. Необязательно запоминать все модификаторы форматирования времени, просто надо знать об их существовании.
- Пройти превосходный туториал по регулярным выражениям и решить примеры (должно занять около одного часа)
- Просмотреть список управляющих символов в Ruby и сохранить его для дальнейшего использования. Вероятно вам пригодятся только символ перевода строки
\n
и символ табуляции\t
. - Для более глубокого понимания изложенного выше материала, прочитать следующие статьи Эрика Траутмана:
Проверьте себя
Внимание: если вы хотите на самом деле писать и запускать свой код, вы можете использовать IRB в командной строке (наберите irb
) или запустите код из файла, используя команду ruby ./ваш_файл_в_текущей_папке.rb
, или используя онлайн редактор на сайте repl.it.
- Убедитесь что вы можете пройти Beginner Ruby Quiz #1 от Code Quzzes.
- Убедитесь что вы знаете ответы на все вопросы из секции «Пункты для размышления». Увидите что для ответа на большинство вопросов вам необязательно лезть в книгу.
Дополнительные ресуры
Здесь содержатся полезные ссылки на другие ресурсы. Материал необязателен для изучения, но весьма полезен если вы хотите углубиться в какую-либо тему
- Если вы не совсем поняли какую-нибудь тему, или вам не нравятся предложенные источники информации, посмотрите эти темы в Bastard’s book
- Не забывайте про упражнения Ruby Monk из курса «Основы веб-разработки»
- Прочтите Learn Ruby the Hard Way главы 1-5 для понимания основ чисел в Ruby.
- Прочтите Zetcode’s раздел про типы данных для более углубленного понимания темы
- Краткая выжимка Алекса Чаффи про объекты
- Наследование в Ruby
- Если вы предпочитаете видео, Treehouse предлагает бесплатное видео про числа.
- Прочтите Zetcode’s раздел про строки для более глубокого понимания работы со строками.
- Прочтите (и посмотрите видео) Объяснения Регулярных Выражений.
- Прочтите Zetcode’s раздел про массивы для более глубокого понимания. Не обращайте много внимания на их объяснения про блоки и методы
collect
,select
иmap
. Мы будем их изучать чуть позже. - Прочтите Zetcode’s раздел про хеши, опять же не обращайте много внимания на
map
и другие разговоры про блоки. - Nil против Empty против Blank
- p против puts в Ruby
- Ruby шпаргалка (довольно объемная) от OverApi.