Skip to content

Instantly share code, notes, and snippets.

@alejolp
Created January 14, 2011 17:11
Show Gist options
  • Save alejolp/779899 to your computer and use it in GitHub Desktop.
Save alejolp/779899 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Alejandro Santos, alejolp@alejolp.com.ar
Adaptador de un Iterador para saber si el Iterador original tiene
un proximo elemento. Igual que los iteradores de Java:
http://download.oracle.com/javase/1.5.0/docs/api/java/util/Iterator.html
"""
class HasNextIter(object):
def __init__(self, it):
self.it = it.__iter__()
self.data = None
self.hn = None
def __iter__(self):
return self
def _fetchOne(self):
try:
self.data = self.it.next()
self.hn = True
except StopIteration:
self.hn = False
def next(self):
if self.hn is None:
self._fecthOne()
if self.hn is False:
raise StopIteration()
else:
self.hn = None
return self.data
def hasNext(self):
if self.hn is None:
self._fetchOne()
return bool(self.hn)
x = HasNextIter([True, False, None] * 2)
while x.hasNext():
print x.next()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment