Advertisement
Guest User

Untitled

a guest
Sep 1st, 2015
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.48 KB | None | 0 0
  1. def iterate_multi(meth, *args)
  2. case meth
  3. when Symbol
  4. enums = args.map { |arg|
  5. to_enum(meth, *arg)
  6. }
  7. else
  8. enums = args.map { |arg|
  9. meth.to_enum(:call, *arg)
  10. }
  11. end
  12.  
  13. ended = false
  14. retvals = Array.new(enums.size)
  15.  
  16. while true
  17. yargs = enums.map.with_index { |enum, i|
  18. begin
  19. enum.next
  20. rescue StopIteration => e
  21. retvals[i] = e.result
  22. ended = true
  23. end
  24. }
  25.  
  26. return retvals if ended
  27.  
  28. yield(*yargs)
  29. end
  30. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement