开放数组

注意: 开放数组只用于形参。

固定大小的数组经常被证明是不够灵活的;过程应当能够处理不同大小的数组。 开放数组 类型允许这样。开放数组总是以0开始的 int 索引。 len, lowhigh 操作符也可以用于开放数组。任何兼容基类型的数组可以传递给开放数组形参, 与索引类型无关。

  1. var
  2. fruits: seq[string] # 字符串序列用 '@[]' 初始化
  3. capitals: array[3, string] # 固定大小的字符串数组
  4.  
  5. capitals = ["New York", "London", "Berlin"] # 数组 'capitals' 允许只有三个元素的赋值
  6. fruits.add("Banana") # 序列 'fruits' 在运行时动态扩展
  7. fruits.add("Mango")
  8.  
  9. proc openArraySize(oa: openArray[string]): int =
  10. oa.len
  11.  
  12. assert openArraySize(fruits) == 2 # 过程接受一个序列作为形参
  13. assert openArraySize(capitals) == 3 # 也可以是一个数组

开放数组类型无法嵌套:多维开放数组不支持,因为这个需求很少见且不能有效的实现。