我想知道跨结构是使用自己的光标还是单独的光标?是否可以确保光标没有移动?如果是,该如何在其他示例中表示出来?
答案 0 :(得分:1)
ITERABLE
使用所谓的外部游标,而不是与基础结构合并的内部游标。结果,以相同方式创建的迭代既不影响结构也不影响任何其他游标。这对于支持嵌套或递归迭代很重要。例如,要查找是否存在重复项,可以执行以下操作:
across structure as i loop
across structure as j loop
if i.item = j.item then print ("Duplicates found.") end
end
end
对内部游标进行相同的操作,例如(注意:代码不正确)
from structure.start until structure.after loop
x := structure.item
from structure.start until structure.after loop
if x = structure.item then print ("Duplicates found.") end
structure.forth
end
structure.forth
end
不起作用,因为内部循环还会更改外部循环的光标。
与ITERABLE
关联的游标的局限性在于,在整个迭代过程中,不应更改关联的结构。这不是一个理论上的限制,而是一个实际的限制,它可以简化实现并使其更加有效。