Что такое lambda?
Вопрос проверяет понимание концепции lambda в Ruby и её применения для работы с кусками кода.
Короткий ответ
Lambda — это разновидность объекта Proc, который представляет собой блок кода с более строгим контролем аргументов. Она создаётся с помощью метода lambda или ->.
Длинный ответ
Lambda — это объект, представляющий собой анонимную функцию. Она позволяет сохранить блок кода для последующего выполнения. В отличие от обычного proc, lambda строго контролирует количество передаваемых аргументов и возвращение из метода.
Создание и использование lambda:
my_lambda = ->(x, y) { x + y }
puts my_lambda.call(2, 3) # => 5
Особенности lambda:
Проверяет количество переданных аргументов:
my_lambda = ->(x) { puts x }
my_lambda.call(1, 2) # Ошибка: wrong number of arguments
Возвращается из самой lambda, а не из метода, в котором она вызвана:
def test_lambda
my_lambda = -> { return "Inside lambda" }
puts my_lambda.call
"Outside lambda"
end
puts test_lambda # => Inside lambda \n Outside lambda
Использование lambda полезно для создания компактных и переиспользуемых функций.