PROPOSAL: fold keyword
Joshua Bloch
jjb at google.com
Thu Mar 5 13:28:11 PST 2009
Gabriel,
This doesn't seem compelling.
Here's your simple example:
// sum all numbers in the list
Integer sum =
fold(Integer n : list; // iterating collection element n
Integer result = 0) { // Where to accumulate the result, and
the initial value
result += n;
};
}
And here's how it looks today (with no change to the language or libraries):
Integer sum = 0;
for (Integer n : list)
sum += n;
Here's one of your complex examples:
// returns a new collection with the salaries of the employees not on
vacation
List<BigDecimal> salaries =
fold(Employee e : emps;
List<BigDecimal> newList = new ArrayList<BigDecimal>()) {
if (!e.onVacation()) {
newList.add(e.getSalary());
}
}
And here's how it looks today:
List<BigDecimal> salaries = new ArrayList<BigDecimal>();
for (Employee e : emps)
if (!e.onVacation())
salaries.add(e.getSalary());
To my eyes, the current version is clearer as well as shorter.
Josh
More information about the coin-dev
mailing list