PROPOSAL: Enhanced while statement (original) (raw)

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 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 list){ while (Transfer t : list) { ArrayList data = new ArrayList(); 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