如何在我的 Eiffel 中跨循环使用后置条件遍历链表?
How to travse a linked list in my postcodition use across loop in Eiffel?
我尝试使用
跨越 1|..|list.count 作为 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
.
我尝试使用 跨越 1|..|list.count 作为 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
.