Есть ли способ обработки Исключения для SyntaxError Ruby «как arg, так и фактический заданный блок»? - PullRequest
0 голосов
/ 15 апреля 2020

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

Я пытался поднять Исключение для SyntaxError, но оно продолжает выдавать ошибку. Это одна из тех вещей, которые я пробовал.

def my_map(&proc)
    raise SyntaxError, "using first block given"
  rescue
    arr = []
    proc = proc.call(i) || yield(i)
    self.my_each do |i|
      arr << proc
    end
    arr
  end

Я также пытался добавить условие для ключевого слова повышение.

Конечно, код работает, если задан только один блок.

1 Ответ

1 голос
/ 16 апреля 2020

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

def f(*args)
  if args.length == 1
    args.first.call
  else
    yield
  end
end

puts 'test 1'
f(->() { puts 'a' }) { puts 'b' }

puts 'test 2'
f { puts 'b' }

Выход

test 1
a
test 2
b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...