PROPOSAL: Enhanced while statement

Marek Kozieł develop4lasu at gmail.com
Sun Mar 29 16:27:19 PDT 2009


AUTHOR: Lasu aka Marek Kozieł

OVERVIEW

FEATURE SUMMARY:
Enhanced while statement allow to iterate through iterator.

MAJOR ADVANTAGE:
People will stop working around for-each loop.

MAJOR BENEFIT(s):Allow to easy express operation on iterator(s), and
iterating over non linear Iterators would be easier.

MAJOR DISADVANTAGE:
Automatic loop over Iterator my be problem for some peoples.

ALTERNATIVES:
Using while loop.


EXAMPLES

SIMPLE EXAMPLE:
  String toString(Iterator<String> list){
    if (!list.hasNext()) return "[]";
    StringBuilder ret = new StringBuilder();
    ret.append('[').append(list.next());
    while (String string : list) {
      ret.append(',').append(list.next());
    }
    return ret.append(']').toString();
  }

ADVANCED EXAMPLE:
  String toString(Iterator<Transfer> list){
    while (Transfer t : list) {
      ArrayList<Data> data = new ArrayList<Data>();
      if ( t.isOpeningTag() )
        while (Transfer t : list){
          if (t.isClosingTag()) break;
          data.add(t.getData());
        }
      else {
        list.remove(); // OK: no interactions
        throw new Exception("...");
        }
      list.remove(); // warning list here can refer to last element of
inner loop
      // Process chunk
    }

  }
DETAILS

SPECIFICATION:
Same as JLS 14.14.2, except:
The Expression must either have type Iterator, or a compile-time error occurs.
Let I be the type of the expression Expression


If Expression is directly field or variable or parameter
(ExpressionVariable) then additional checking is performed:
If Variable is used as Expression for while-each loop inside
while-each loop over same Variable then Variable occurring after inner
while-each loop (but in outer while-each loop) will compile with
warning “Variable state refer to inner loop”.

COMPILATION:
Same as for-each (almost).

TESTING:
Same as while loops.

LIBRARY SUPPORT:
None.

REFLECTIVE APIS:
No.

OTHER CHANGES:
No.

MIGRATION:
None.

COMPATIBILITY
Except code, which is only forward compatibility.

REFERENCES
Enhanced for each loop iteration control

-- 
Pozdrowionka. / Regards.
Lasu aka Marek Kozieł

http://lasu2string.blogspot.com/



More information about the coin-dev mailing list