Урок десятый: Лямбда-функции

Введение в Ruby [HEXLET]

Что показали в видео

Лямбда функции являются очень важным понятием в программировании. В языке Ruby большая часть концепций строится на абстракциях. Лямбда-функции очень широко применяются при написании программ на Ruby.

Лямбда функция = анонимная функция = у неё не задаётся название.

Её главная особенность заключается в том, что это функция высшего порядка — может передаваться как аргумент в другую функцию и возвращена как результат работы другой функции.

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

Что такое абстракция — методы минимизации информации, для реализации возможности фокусирования на нескольких идеях одновременно.

Иными словами, абстракция — это когда мы говорим о результатах, опуская подробности того как мы к этому результату пришли.

Надеюсь что я правильно уловил суть.

Как определяется лямбда-функция

Для определения лямбда-функции используется запись вида:

  • объявление функции — func
  • присваивание =
  • стрелка ->
  • переданные аргументы функции ОБЯЗАТЕЛЬНО в круглых скобках (num)
  • тело функции в фигурных скобках { num ** 2 }

Для вызова функции необходимо вызвать метод .call и передать значение аргументам функции.

Урок десятый: Лямбда-функции
Пример простейшей лямбда-функции с вызовом функции в консоли.

Пример использования абстракции по средствам лямбда-функции

func = -> (num) { num ** 3 }

def sum_range(num1, num2, func)
  if num1 == num2
    func.call(num2)
  else
    func.call(num1) + sum_range(num1 + 1, num2, func)
  end
end

puts sum_range(1, 3, func)

В этом примере используется рекурсия, это когда функция вкладывается сама в себя. Я пока слабо понимаю эту фишку, но позже закреплю знание на книгах. Это ведь бесплатный курс из жанра «далеко не все расскажем, а если ты не понял — гугли».

Практическая часть — не справился!

Тут у меня реальная жесть случилась. Во первых, что бы почитать ссылку на теоретический материал, нужно начать курс по PHP, что мне показалось странным.

Во вторых для получения дополнительной информации по уроку — «Визуализация рекурсии» мне необходимо оплатить Премиум подписку, которая стоит 40 баксов в месяц. Ну это тоже так себе.

Тут я встал перед выбором — добирать знания отложив завершение этого курса на потом, или посмотреть подсказку и схитрить.

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

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

Это спорное решение, которое меня скорее смущает, нежели радует.

Не рекомендую эту платформу и этот курс для новичков, если вы не планируете платить.

Куда я перехожу дальше

В процессе исследования ресурсов для изучения языка программирования Ruby я нашёл сайт проекта Ruby Rush, на сайте которого размещён бесплатный курс по программированию на Ruby для начинающих.

Я решил что следующим буду проходить его!

Юрий Ронин