Перевод Java на X10

Я перевожу 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]();

Любые предложения и, возможно, объяснение того, что я делаю неправильно?


person Matt Nowak    schedule 11.03.2012    source источник
comment
Что заставляет вас думать, что вы делаете что-то не так? Есть ли ошибка компилятора или сообщение об ошибке времени выполнения, которое вы можете перечислить?   -  person maerics    schedule 27.03.2012
comment
Не знаю, заметили ли вы это, но ArrayList<Posting>[] list = new ArrayList[this.V]; — это массив ArrayLists (ужасный Java-код, кстати). Я не знаю x10, но после небольшого просмотра в Интернете, похоже, вы не совсем правильно перевели...   -  person trutheality    schedule 27.03.2012


Ответы (2)


Согласен с правдой. Вам нужно определить 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);
person Josh Milthorpe    schedule 18.04.2013

Вот код, который должен работать для вас:

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]());

то есть используйте один оператор для создания инициализированного массива.

person Vijay Saraswat    schedule 11.02.2014