Расширенные базовые элементы Ruby

Этот урок освещает темы, которые пока мало затрагивались в нашем курсе. Мы подробно рассмотрим такие темы как: управление процессом исполнения программы, циклы, массивы, хеши, блоки и строки. Все это будет рассмотрено подробнее, чем в предыдущих разделах. Проекты в секции Задания рассчитаны на самостоятельную работу, потому что Codeacademy может дать всю информацию которая может понадобиться.

Пункты для размышления

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

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

  • Условия и управление процессом исполнения

    • Что такое boolean?
    • Какие значения возвращают true?
    • Что вернут nil, 0, "0", "", 1, [], {} and -1, true или false?
    • Когда используется elsif?
    • Когда используется unless?
    • Что делает <=>?
    • Зачем может понадобиться определять свой метод <=>?
    • Что делают операторы ||, && и !?
    • Что вернет вызов puts("woah") || true?
    • Что такое ||=?
    • Что такое тернарный оператор?
    • Когда используется оператор case?
  • Итерации

    • Что делает loop?
    • Какими двумя способами можно определить блок кода?
    • Что такое индексная переменная?
    • Как вывести на экран каждый элемент массива [1,3,5,7] с помощью:
      • loop?
      • while?
      • for?
      • #each?
      • #times?
    • Какая разница между while и until?
    • Как остановить цикл?
    • Как пропустить следующую итерацию цикла?
    • Как запустить цикл заново?
    • Какие основные различия между ситуациями когда стоит использовать while или #timesили #each?
    • Что значит "внутренные циклы" и когда их стоит использовать?
  • Блоки, Proc и лямбды:

    • Чем блок схож с функцией?
    • Чем блок отличается от функции?
    • Какими двумя способами объявить блок?
    • Как вернуть данные из блока?
    • Что происходит когда вы включаете оператор return в блок?
    • Для чего стоит использовать блок вместо простого объявления метода?
    • Что делает yield?
    • Как передать аргументы в блок изнутри метода?
    • Как проверить вызывался ли блок?
    • Что такое proc?
    • Какая разница между proc и блоком?
    • Когда стоит использовать proc вместо блока?
    • Что такое замыкание (closure)?
    • Что такое лямбда?
    • Какая разница между лямбдой и proc?
    • Что такое Method (с большой М)?
    • Что Методы позволяют сделать такого, что возможно будет полезным в дальнейшем при разработке более продвинутых программ?
  • Перечисления (Enumerable) и модули

    • Что такое модули?
    • Чем полезны модули?
    • Что делает #each?
    • Что возвращает #each?
    • Что делает #map?
    • Что возвращает #map?
    • В чем разница между #map и #collect?
    • Что делает #select?
    • Что возвращает #select?
    • Какая разница между #each, #map и #select?
    • Что делает #inject?
    • Для чего можно использовать #inject?
    • Как проверить, удовлетворяет ли каждый элемент в хеше определенному условию?
    • Что будет, если ни один из элементов не удовлетворяет условию?
    • Что такое (в основном) enumerator?
  • Написание методов

    • Сколько вещей должен делать метод в идеале?
    • Какие типы объектов должен модифицировать метод?
    • Как стоит называть методы?
    • Что значит self?
    • Что надо сделать чтобы создать свой файл Ruby скрипта?
    • Как запустить свой Ruby скрипт из командной строки?
    • Как убедиться, что что ваш скрипт был запущен из командной строки?
    • Что делает "shebang" строка?
    • Что делает require?
    • Что делает load?
    • В чем разница между load и require?
    • Как получить доступ к параметрам, которые были переданы файлу скрипта из командной строки?
    • Что делает #send?
    • Отличается ли использование #send от обычного вызова метода объекта?

Ваше задание

  1. Выполнить Секции 2-6 курса от Codeacademy, включая:

    1. Управление процессом выполнения
    2. Проект: Thith Meanth War!
    3. Циклы в Ruby
    4. Проект: Redacted!
    5. Массивы и Хеши
    6. Проект: Create a Histogram
    7. Блоки и Сортировка
    8. Проект: Ordering your Library
    9. Хеши и Символы
    10. Проект: A Night at the Movies
    11. Блоки, Proc и лямбды
  2. Завершить Beginning Ruby Глава 3: Ruby's Building Blocks: Data, Expressions, and Flow Control (страницы 50-76)

  3. Посмотреть следующие посты Эрика Траутмана для более углубленного понимания

    1. Ruby Explained: Conditionals and Flow Control
    2. Ruby Explained: Iteration
    3. Ruby Explained: Blocks, Procs, and Lambdas, aka "Closures"
    4. Ruby Explained: Map, Select, and Other Enumerable Methods
    5. Ruby Explained: Writing and Running Methods

Проверьте себя

Убедитесь, что вы можете пройти следующие тесты от Code Quizzes. Они не требуют много времени и могут дать вам понимание, чего вам не хватает.

  1. Beginner Ruby Quiz #2
  2. Quiz #3
  3. Quiz #4
  4. Quiz #6

Дополнительные ресурсы

Здесь собраны полезные ссылки на другие источники информации. Изучать их необязательно, но они могут быть полезны для более глубокого погружения в материал

Поделиться уроком: