Parallel processing 将旧X10示例移植到版本2.5

Parallel processing 将旧X10示例移植到版本2.5,parallel-processing,x10-language,Parallel Processing,X10 Language,我在试图编译的类中有一个旧的X10示例 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) { testArr

我在试图编译的类中有一个旧的X10示例

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));
    }
}
不幸的是,它似乎过时了。我自己就知道,现在必须编写
publicstaticdefmain(args:Rail[String])
val regionTest=1..12
的定义似乎没有问题。数组的语法一定是错误的,下面的所有行也可能是错误的。我试图用它来解决这个问题,但没有成功

我的设置正在运行,新的X10 Eclipse IDE项目中的初始类正在运行


有人能帮我将其移植到2.5.x版吗?

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行)没有从
    远程
    1..12
    )到
    区域的隐式类型转换。必须显式构造
    Region
    对象并将其传递给
    x10.regionarray.Array
    构造函数
  • (第7行)默认的整数类型现在是
    Long
    ,而不是
    Int
    Int
    文本必须以字符“
    n
    ”作为后缀,如“
    (点)=>0n
  • (第8-9行)数组类的索引类型已从
    Int
    更改为
    Long
    (以支持非常大的数据结构)。因此([i]在testArray中)
    的分解
    迭代器
    现在生成
    i:Long
    ,而不是
    i:Int
    ——这意味着现在在第9行分配给
    Int
    数组元素时需要将
    i转换为Int