我正在将一个Java程序翻译成X10并遇到了一些我想知道是否有人可以帮我翻译的问题。
这是我要翻译的一个Java片段:
ArrayList<Posting>[] list = new ArrayList[this.V];
for (int k=0; k<this.V; ++k) {
list[k] = new ArrayList<Posting>();
}
这就是我在X10中所做的:
var list:ArrayList[Posting]=new ArrayList[Posting](this.V);
for (var k:int=0; k<this.V; ++k) {
list(k)=new ArrayList[Posting]();
}
产生大量错误陈述的行是:
list(k)=new ArrayList[Posting]();
任何建议,也许是对我做错了什么的解释?
答案 0 :(得分:1)
同意trutheality。您需要将list
定义为Rail[ArrayList[Posting]]
:
var list:Rail[ArrayList[Posting]]=new Rail[ArrayList[Posting]](this.V);
此外,由于X10支持不可变变量的类型推断,因此通常最好使用val
而不是var
并完全省略类型声明:
val list = new Rail[ArrayList[Posting]](this.V);
答案 1 :(得分:1)
以下是适合您的代码:
val list = new Rail[ArrayList[Posting]](this.V);
for (k in 1..(this.V)) {
list(k)=new ArrayList[Posting]();
}
你也可以
val list = new Rail[ArrayList[Posting]](this.V, (Long)=>new ArrayList[Temp]());
即。使用单个语句创建初始化数组。