Есть ли элегантный способ передать «ничего не делать» как лямбду? - PullRequest
0 голосов
/ 11 сентября 2018

Предположим, у меня есть метод foo, который требует лямбда-параметра. Лямбда вызывается foo с аргументами. На самом деле я не хочу, чтобы что-то происходило при исполнении лямбды.

В настоящее время я делаю это:

foo(->(*) {})

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

Есть ли лучший способ передать лямбду "ничего не делать"?

1 Ответ

0 голосов
/ 11 сентября 2018

Я бы порекомендовал переосмыслить foo вместо этого.

При этом я не думаю, что есть более элегантный способ, но если бы вы действительно хотели, вы могли бы добавить что-то вроде этого (что уродливее в моеммнение чем то, что у тебя есть)

module Kernel
  def noop
    Proc.new {}
  end
end

Тогда звони как

def foo(blk)
  blk.call(1,2,3,4,5)
end

foo(noop) 
#=> nil
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...