Arrays Xtend:在for循环中将元素添加到数组中

Arrays Xtend:在for循环中将元素添加到数组中,arrays,xtend,Arrays,Xtend,我正在尝试在Xtend中执行最简单的操作,但不知道如何执行。我想在for循环内的double[]数组中添加一个double值 例如: def do(EList<MyObject> list) { var double[] array = newDoubleArrayOfSize(list.size); for (i : 0 ..< list.size) { array[i] = list.get(i).myValue; } ret

我正在尝试在Xtend中执行最简单的操作,但不知道如何执行。我想在for循环内的
double[]
数组中添加一个
double

例如:

def do(EList<MyObject> list) {
    var double[] array = newDoubleArrayOfSize(list.size);
    for (i : 0 ..< list.size) {
        array[i] = list.get(i).myValue;
    }
    return array;
}
def do(列表列表){
var double[]array=newDoubleArrayOfSize(list.size);
对于(i:0..<列表大小){
数组[i]=list.get(i).myValue;
}
返回数组;
}
第四行显示一个错误,因为我不能使用
数组[I]=…

如何在Xtend中实现这一点?在《用户指南》中找不到任何内容。

Xtend使用不同的(“类似列表”)语法来访问数组元素,有关详细信息,请参阅:

检索和设置数组的值是通过扩展来完成的 方法get(int)和set(int,T),它们专门为 数组和直接转换为等效的本机Java代码 myArray[int]

因此,您的代码应该是:

def method(EList<MyObject> list) {
    var double[] array = newDoubleArrayOfSize(list.size);
    for (i : 0 ..< list.size) {
        array.set(i, list.get(i).myValue);
    }
    return array;
}
另一种选择是以更实用的风格编写方法。如果可以将
EList
替换为
List
(或
EList
扩展/实现
List
),则可以简单地编写:

def double[] method(List<MyObject> list) {
    list.map[myValue]
}
def double[]方法(列表){
list.map[myValue]
}
在这种情况下,必须将返回类型显式声明为
double[]
,否则它将被推断为
List


(还有一件事:通常情况下,集合比数组更受欢迎,因为它们更灵活,API更丰富,Xtend也有一些其他的优点。)

非常感谢Snorbi,这对我帮助很大!
def double[] method(List<MyObject> list) {
    list.map[myValue]
}