Ceylon是否计划支持多维数组?如何声明该结构(附Java示例)
Ceylon中的多维数组实现方案
嘿,好问题!Ceylon其实并没有原生的多维数组类型,但完全可以通过**嵌套的数组(或者更推荐的序列/列表)**来实现你想要的Java二维数组结构,用法和Java非常相似,完全能满足你的需求。
1. 声明并初始化二维数组
对应你给出的Java示例,在Ceylon里可以这样写:
// 定义维度大小 Integer x = 5; Integer y = 5; // 创建一个x行y列的二维String数组,初始值为空字符串 Array<Array<String>> myStringArray = Array(x, (index) => Array(y, ""));
这里解释下:
Array<Array<String>>就是二维数组的类型,表示“元素为String数组的数组”- 外层Array的构造器接受两个参数:数组大小
x,以及一个初始化函数,用来生成每个子数组(这里每个子数组是大小为y、初始值为空字符串的String数组)
2. 给二维数组赋值
和Java的写法几乎一样,直接通过双下标访问并赋值:
myStringArray[2][2] = "a string";
额外说明:关于Ceylon的多维数组计划
目前Ceylon并没有计划添加原生的多维数组类型,因为嵌套的容器(Array、Sequence等)已经能完美覆盖多维数据结构的需求,而且还支持更灵活的不规则数组(比如每个子数组的长度可以不同),比原生多维数组更具扩展性。
如果你的场景不需要修改数组内容,还可以使用Ceylon更推荐的不可变序列Sequence,写法类似:
Sequence<Sequence<String>> myStringSequence = sequence(x, (index) => sequence(y, ""));
不过序列是不可变的,一旦创建就无法修改元素值,适合只读场景。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

