EventStream should extend Iterator<Event>
-----------------------------------------
Key: OPENNLP-99
URL: https://issues.apache.org/jira/browse/OPENNLP-99
Project: OpenNLP
Issue Type: New Feature
Components: Maxent
Affects Versions: maxent-3.0.0-sourceforge
Reporter: Steven Bethard
[As requested, brought over from Sourceforge.]
Conceptually, EventStream is just an Iterator<Event>. You would get better
interoperability with other Java libraries if EventStream were declared as
such. If you didn't care about backwards compatibility, I'd say just get rid of
EventStream entirely and use Iterator<Event> everywhere instead.
If you care about backwards compatibility, you could at least declare
AbstractEventStream as implementing Iterator<Event> - it declares all of
hasNext(), next() and remove(). I believe that shouldn't break anything, and
should make all the current EventStream implementations into Iterator<Event>s.
Why do I want this? Because, when using OpenNLP maxent from Scala, if a
RealValueFileEventStream were an Iterator<Event>, I could write:
for (event <- stream) {
...
}
But since it's not, I instead have to wrap it in an Iterator:
val events = new Iterator[Event] {
def hasNext = stream.hasNext
def next = stream.next
}
for (event <- events) {
...
}
Or write the while loop version:
while (stream.hasNext) {
val event = stream.next
...
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.