我正在将一个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]();
关于我做错了什么,有什么建议和解释吗?
同意事实。您需要将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);
以下是适用于您的代码:
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]());
即使用单个语句来创建初始化的数组。