Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def iterate_multi(meth, *args)
- case meth
- when Symbol
- enums = args.map { |arg|
- to_enum(meth, *arg)
- }
- else
- enums = args.map { |arg|
- meth.to_enum(:call, *arg)
- }
- end
- ended = false
- retvals = Array.new(enums.size)
- while true
- yargs = enums.map.with_index { |enum, i|
- begin
- enum.next
- rescue StopIteration => e
- retvals[i] = e.result
- ended = true
- end
- }
- return retvals if ended
- yield(*yargs)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement