From: SourceForge.net <no...@so...> - 2007-07-07 21:51:36
|
Feature Requests item #1749740, was opened at 2007-07-07 23:45 Message generated for change (Comment added) made by orexx You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=684733&aid=1749740&group_id=119701 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Classes Group: Next Release Status: Open Resolution: None Priority: 5 Private: No Submitted By: Rony G. Flatscher (orexx) Assigned to: Nobody/Anonymous (nobody) Summary: Please supply an "Iterator" for any collection Initial Comment: As pointed out in the "Cursor" RFE I have come up with an implemenation of a class "Iterator" that can be used with any collection. Its methods and logic duplicates as much of Supplier as possible (it adds positioning). An iterator object should work on a snapshot of the colletction and supply the following methods: - init(collection): constructor expecting a collection - available: returns .true if an index/item pair is available - next: positions on the next index/item pair - previous: positions on the previous index/item pair - first: positions on the first index/item pair - last: positions on the last index/item pair - position: attribute which stores the number of the index/item pair the iterator is currently addressing - index: returns the index value - item: returns the item value The class is uploaded with this RFE. A possible program using that class, followed by its output: ------------- cut here ------------- arr=.array~of("a", "b", "c") say "Iterating using 'next':" it=.Iterator~new(arr) -- create an ierator do while it~available say it~position"/"it~items":" "index="it~index"," "item="it~item it~next end say "---" say "Positioning using 'last', ierating using 'previous':" it~last -- position on last index/item pair do while it~available say it~position"/"it~items":" "index="it~index"," "item="it~item it~previous end say "---" say "Positioning on second index/item pair:" it~position=2 say it~position"/"it~items":" "index="it~index"," "item="it~item say "---" ::requires "Iterator.cls" -- get the "Iterator" class ------------- cut here ------------- Output of previous program, if run with the uploaded "Iterator.cls" definition: ------------- cut here ------------- Iterating using 'next': 1/3: index=1, item=a 2/3: index=2, item=b 3/3: index=3, item=c --- Positioning using 'last', ierating using 'previous': 3/3: index=3, item=c 2/3: index=2, item=b 1/3: index=1, item=a --- Positioning on second index/item pair: 2/3: index=2, item=b --- ------------- cut here ------------- ---------------------------------------------------------------------- >Comment By: Rony G. Flatscher (orexx) Date: 2007-07-07 23:51 Message: Logged In: YES user_id=662126 Originator: YES Sorry, forgot the "items" method which returns the number of index/item pairs in the iterator (this method is available in the Iterator class implementation). ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=684733&aid=1749740&group_id=119701 |