#ruby #ruby-stdlib
Вопрос:
Есть ли в Ruby ярлык для получения лямбды, которая просто возвращает свой аргумент?
Я пытаюсь выполнить следующую функцию:
def some_method(x, y, decorator = ->(x) { x })
…
end
Переписано так, чтобы выглядеть как-то похоже
def some_method(x, y, decorator = method(:itself))
…
end
Может быть, есть способ сменить приемник Object#itself
?
Ответ №1:
Вы, вероятно, много раз видели подобный код в ruby:
array.map(amp;:upcase)
Ну, а что amp;:upcase
на самом деле означает? Это на самом деле звонок Symbol#to_proc
.
Поэтому вы можете определить метод следующим образом:
def some_method(x, y, decorator = :itself.to_proc)
# ...
end