[ https://issues.apache.org/jira/browse/GIRAPH-221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13403322#comment-13403322 ]
Alessandro Presta commented on GIRAPH-221: ------------------------------------------ Ok, then it's a trade-off between simplicity (Iterator) and syntactic sugar (Iterable). I have no strong opinion on this. Thoughts? Additionally: are there huge performance benefits in having our edge iterator return I instead of Edge<I, E>? Avery mentioned there's already been some discussion on this, so I don't want to bring up old arguments, but it would be interesting to know pros and cons if someone has already gone through this. Personally I think that would be another little improvement in clarity (calling something an edge when it's actually a vertex id is also misleading). > Make iteration over edges more explicit > --------------------------------------- > > Key: GIRAPH-221 > URL: https://issues.apache.org/jira/browse/GIRAPH-221 > Project: Giraph > Issue Type: Improvement > Components: graph > Reporter: Alessandro Presta > Assignee: Alessandro Presta > Priority: Minor > > Is there any particular reason why BasicVertex implements Iterable? > It seems to me that doing > {code:java} > for (I neighbor : vertex) > {code} > is not that explicit, and > {code:java} > for (I neighbor : this) > {code} > gets even obscure (which may be why all examples in the codebase explicitly > instantiate an iterator and call next()). > What I propose is a more explicit > {code:java} > Iterator<I> outEdgesIterator() > {code} > and also a convenient > {code:java} > Iterable<I> outEdges() > {code} > so, for example, an algorithm can use > {code:java} > for (IntWritable neighbor : outEdges()) > {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira