我在类中有一个旧的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));
}
}不幸的是,它似乎已经过时了。我可以自己想出来,你现在必须写public static def main(args:Rail[String])。val regionTest = 1..12的定义似乎是正确的。数组的语法一定是错误的,后面的所有行也可能是错误的。我试图用this guide解决这个问题,但没有成功。
我的设置正在工作,一个新的X10 Eclipse IDE项目中的初始类开始运行。
有人能帮我把这个移植到2.5.x版本吗?
发布于 2015-04-14 11:06:14
在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));
}
}这演示了许多重要的变化:
x10.array包移至x10.regionarray。这些类不再由default.LongRange (1..12)到Region的隐式类型转换。必须显式构造Region对象并将其传递给x10.regionarray.Array constructor.Long而不是Int。在'(Point)=>0n'.Int文本必须以字符'n‘为后缀)数组类的索引类型已从Int更改为Long (以支持非常大的数据结构)。因此,松散的Point迭代器for ([i] in testArray)现在生成i:Long而不是i:Int -这意味着在第9行为Int数组元素赋值时,现在需要强制转换i as Int。https://stackoverflow.com/questions/29472036
复制相似问题