切片

切片语法看起来像子范围但用于不同的场景。切片只是一个包含两个边界 a and b 的切片类型对象。 它自己不是很有用,但是其它收集类型定义接受切片对象来定义范围的操作符。

  1. var
  2. a = "Nim is a progamming language"
  3. b = "Slices are useless."
  4.  
  5. echo a[7..12] # --> 'a prog'
  6. b[11..^2] = "useful"
  7. echo b # --> 'Slices are useful.'

在上面的例子中切片用于修改字符串的一部分。切片边界可以持有任何它们的类型支持的值,但它是使用切片对象的过程,它定义了接受的值。

为了理解指定字符串、数组、序列等索引的不同方法, 必须记住Nim使用基于零的索引。

所以字符串 b 长度是19, 两个不同的指定索引的方法是

  1. "Slices are useless."
  2. | | |
  3. 0 11 17 使用索引
  4. ^19 ^8 ^2 使用^

其中 b[0..^1] 等价于 b[0..b.len-1]b[0..<b.len] ,它可以看作 ^1 提供一个指定 b.len-1 的简写。

在上面的例子中,因为字符串在句号中结束,来获取字符串中"useless"的部分并替换为"useful"。

b[11..^2] 是"useless"的部分, b[11..^2] = "useful" 用"useful"替换"useless",得到结果"Slices are useful."

注意: 可选方法是 b[^8..^2] = "useful"b[11..b.len-2] = "useful" 或 as b[11..<b.len-1] = "useful"