切片
切片语法看起来像子范围但用于不同的场景。切片只是一个包含两个边界 a and b 的切片类型对象。 它自己不是很有用,但是其它收集类型定义接受切片对象来定义范围的操作符。
- var
- a = "Nim is a progamming language"
- b = "Slices are useless."
- echo a[7..12] # --> 'a prog'
- b[11..^2] = "useful"
- echo b # --> 'Slices are useful.'
在上面的例子中切片用于修改字符串的一部分。切片边界可以持有任何它们的类型支持的值,但它是使用切片对象的过程,它定义了接受的值。
为了理解指定字符串、数组、序列等索引的不同方法, 必须记住Nim使用基于零的索引。
所以字符串 b 长度是19, 两个不同的指定索引的方法是
- "Slices are useless."
- | | |
- 0 11 17 使用索引
- ^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" 。