2015-04-06 25 views
1

我有一箇舊的X10示例,我試圖編譯。端口舊X10版本2.5的示例

import x10.array.Array; 
import x10.io.Console; 
... 
public static def main(args: Array[String](1)) { 
    val regionTest = 1..12; 
    val testArray = new Array[Int](1..12, (Point)=>0); 
    for ([i] in testArray) { 
     testArray(i) = i; 
     Console.OUT.println("testArray("+i+") = " + testArray(i)); 
    } 
} 

不幸的是,它似乎已經過時。我可以自己弄清楚你現在必須寫public static def main(args:Rail[String])val regionTest = 1..12的定義似乎沒問題。該數組的語法必須是錯誤的,所有後面的行也許也是如此。我試圖用this guide來解決這個問題,但沒有成功。

我的設置正在運行,新X10 Eclipse IDE項目中的初始類運行。

有人可以幫我把它移植到版本2.5.x?

回答

1

在X10 2.4版中有一些非向後兼容的更改,它們需要更改代碼 - 請參閱"porting to X10 2.4"的指南。

你的例子是如下進行更新:

import x10.regionarray.Array; 
import x10.regionarray.Region; 
import x10.io.Console; 
.... 
public static def main(args:Rail[String]) { 
    val regionTest = Region.makeRectangular(1..12); 
    val testArray = new Array[Int](regionTest, (Point)=>0n); 
    for ([i] in testArray) { 
     testArray(i) = i as Int; 
     Console.OUT.println("testArray("+i+") = " + testArray(i)); 
    } 
} 

這證明了一些重要的變化:

  • (系1--2)的通用陣列類已從移動x10.array包到x10.regionarray。這些類不再默認導入。
  • (第6 - 7行)沒有從LongRange1..12)到Region的隱式類型轉換。必須明確構造對象Region並將其傳遞給構造函數x10.regionarray.Array
  • (第7行)默認的整數類型現在是Long而不是IntInt文字必須後綴爲'n',如'(Point)=>0n'中的字符。
  • (第8 - 9行)數組類的索引類型已從Int更改爲Long(以支持非常大的數據結構)。因此,爆炸Point迭代for ([i] in testArray),現在產量i:Long而不是i:Int - 這意味着中投i as Int指派給Int數組元素時在線9
+0

非常感謝你現在需要! – joschuck 2015-04-21 19:29:53