>我尝试使用跨 1|..|list.count as j都 list.i_th(z) ~ 旧list.i_th(z)结束
但它说未知标识符 z。 这个语法有什么问题??
语法正确。但是,没有声明名称z
的标识符,因此出现错误。取而代之的是游标变量j
。当前光标位置的项目可通过 j.item
进行访问。
另一个问题是j
是在当前上下文(后置条件)中计算的,但在执行特征体之前计算旧表达式,其中不存在j
。因此,带有 old list.i_th (j.item)
的代码将无法编译。换句话说,该值应取自旧列表,但使用当前索引。表达式(old list).i_th (j.item)
可以解决问题。
但这仍然没有做需要的事情。事实证明,old list = list
是因为对列表对象的引用保持不变。要获取旧元素,需要列表的副本:(old list.twin)
。
结合上述所有内容,表达式应如下所示 across 1 |..| list.count as j all list.i_th (j.item) ~ (old list.twin).i_th (j.item) end
.