无限扩展数组
Infinitely expanding array
我将如何创建一个数组数组,它可以继续这种方式,在数组中添加数组等,而无需明确知道有多少数组可以包含数组?
最重要的是,出于好奇,是否可以更改数组的类型,例如,如果我使用 ["test"] 创建一个数组,我可以随后将其更改为 [["test"]] 等等?
任何关于如何嵌套数组等的综合教程都会很棒,但目前仍然很难搜索 crystal 个主题。
您可以为此使用递归别名(请参阅 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"]]
我将如何创建一个数组数组,它可以继续这种方式,在数组中添加数组等,而无需明确知道有多少数组可以包含数组?
最重要的是,出于好奇,是否可以更改数组的类型,例如,如果我使用 ["test"] 创建一个数组,我可以随后将其更改为 [["test"]] 等等?
任何关于如何嵌套数组等的综合教程都会很棒,但目前仍然很难搜索 crystal 个主题。
您可以为此使用递归别名(请参阅 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"]]