作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对以下观察感到困惑。一方面,这有效:
for i in 5..10:
echo i
var slice = 5..10
for i in slice:
echo i
type mismatch: got (Slice[system.int])
,并且显然没有
system.items
的重载签名
Slice[T]
的迭代器.这就提出了以下问题:
最佳答案
与 for i in 5..10:
你调用迭代器 ..
(doc) , 这只是 countup 的别名。由于这是一个内联迭代器,它将 for 循环转换为值 5 到 10 的 while 循环。但是内联迭代器不能分配给一个变量,除了闭包迭代器。
与 var slice = 5..10
你调用过程 ..
(doc) ,这会生成 Slice(a: 5, b: 10)
.但是 Slices 没有默认的 items
迭代器定义。
您可以从 slice.a
进行迭代至slice.b
, 像这样:
var slice = 5..10
for i in slice.a .. slice.b:
echo i
items
迭代器,像这样:
iterator items*[T](s: Slice[T]): T =
for i in s.a .. s.b:
yield i
var slice = 5..10
for i in slice:
echo i
关于for-loop - 尼姆 : How to iterate over a slice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29428702/
我是一名优秀的程序员,十分优秀!