无限扩展阵列

时间:2017-08-07 14:18:43

标签: arrays multidimensional-array crystal-lang

我如何创建一个数组数组,可以继续这种方式,在数组内部添加数组等,而无需明确知道有多少数组可以包含数组?

除此之外,出于好奇,是否可以使用Arrays更改类型,例如,如果我使用[“test”]创建数组,我可以随后将其更改为[[“test”]]和等等?

任何关于如何嵌套数组等的综合教程都会令人惊叹,但目前搜索水晶主题仍然非常困难。

1 个答案:

答案 0 :(得分:3)

您可以为此使用递归别名(请参阅alias的语言参考):

alias NestedArray = Array(NestedArray) | <YourArrayItemType(s)>

示例(carc.in):

alias NestedArray = Array(NestedArray) | Int32

array = [] of NestedArray
array << 1
array << [2, 3, 4, [5, [6, 7, [8] of NestedArray] of NestedArray] of NestedArray] of NestedArray
array << Array(NestedArray){Array(NestedArray){10, 11}}
array # => [1, [2, 3, 4, [5, [6, 7, [8]]]], [[10, 11]]]

关于第二个问题,我不确定你的意思。您可以像这样更改变量的类型:

array = ["test"]
array = [array]
array # => [["test"]]