Xtend: Add element to array in for-loop -
i trying simplest operation in xtend, don't know how. want add double value double[] array inside for-loop.
for example:
def do(elist<myobject> list) { var double[] array = newdoublearrayofsize(list.size); (i : 0 ..< list.size) { array[i] = list.get(i).myvalue; } return array; } the forth line shows error, because can't use array[i] = ....
how implement in xtend? haven't found in user guide.
xtend has different ("list-like") syntax accessing array elements, see related documentation details:
retrieving , setting values of arrays done through extension methods get(int) , set(int, t) overloaded arrays , translated directly equivalent native java code myarray[int].
so code should be:
def method(elist<myobject> list) { var double[] array = newdoublearrayofsize(list.size); (i : 0 ..< list.size) { array.set(i, list.get(i).myvalue); } return array; } you can further simplify method omitting semicolons , type declaration of array variable:
def method(elist<myobject> list) { val array = newdoublearrayofsize(list.size) (i : 0 ..< list.size) { array.set(i, list.get(i).myvalue) } return array } another alternative write method in more functional style. if can replace elist list (or elist extends/implements list) write:
def double[] method(list<myobject> list) { list.map[myvalue] } in case must explicitly declare return type double[] because otherwise inferred list<double>.
(just 1 more thing: collections preferred on arrays because more flexible , have more rich apis, , xtend has additional goodies collection literals.)
Comments
Post a Comment