首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将旧的X10示例移植到2.5版

将旧的X10示例移植到2.5版
EN

Stack Overflow用户
提问于 2015-04-06 21:13:25
回答 1查看 124关注 0票数 1

我在类中有一个旧的X10示例,我正在尝试编译它。

代码语言:javascript
复制
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版本吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-14 11:06:14

在X10版本2.4中有许多非向后兼容的更改,这些更改需要更改代码-请参阅"porting to X10 2.4"指南。

您的示例将按如下方式更新:

代码语言:javascript
复制
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。这些类不再由default.
  • (Lines 6导入--7)不存在从LongRange (1..12)到Region的隐式类型转换。必须显式构造Region对象并将其传递给x10.regionarray.Array constructor.
  • (Line 7)默认的整数类型现在是Long而不是Int。在'(Point)=>0n'.
  • (Lines 8--9中,Int文本必须以字符'n‘为后缀)数组类的索引类型已从Int更改为Long (以支持非常大的数据结构)。因此,松散的Point迭代器for ([i] in testArray)现在生成i:Long而不是i:Int -这意味着在第9行为Int数组元素赋值时,现在需要强制转换i as Int
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29472036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档