Loops 埃菲尔铁塔横穿一座像vs一样的城堡

Loops 埃菲尔铁塔横穿一座像vs一样的城堡,loops,iterator,iteration,eiffel,Loops,Iterator,Iteration,Eiffel,我没有找到关于is和as 我想实现一个类似的迭代器,我想知道使用is关键字和as关键字返回什么类型 我认为is将是迭代游标[G]类的项 as是否返回一个ITERABLE[G]类的迭代游标[G]。新的ITERABLE[G]游标 当循环光标上调用的唯一功能是项时,带有的版本是一个快捷方式。快捷方式消除了显式调用查询的需要。因此,以下两个版本在语义上是等价的: across foo as x loop ... x.item ... end across foo is x loop ... x ...

我没有找到关于
is
as

我想实现一个类似的迭代器,我想知道使用
is
关键字和
as
关键字返回什么类型

  • 我认为is将是
    迭代游标[G]
    类的
  • as是否返回一个
    ITERABLE[G]
    类的
    迭代游标[G]
    。新的
    ITERABLE[G]
    游标

当循环光标上调用的唯一功能是
项时,带有
的版本是一个快捷方式。快捷方式消除了显式调用查询的需要。因此,以下两个版本在语义上是等价的:

across foo as x loop ... x.item ... end
across foo is x loop ... x ... end
换句话说,第二个版本可以被视为自动翻译成

across foo as _x loop ... _x.item ... end
其中,
\ux
不可访问,
x
代表
\ux.项

第一个版本中的
x
类型是
ITERATION\u CURSOR[G]
。在第二个版本中,它是
{ITERATION\u CURSOR[G]}.item
的类型,即
G


事实上,从执行迭代的对象上调用的查询类型
new\u cursor
。但是,此光标类型中可用的任何附加功能只有在使用循环的完整迭代形式时才能访问,并且在使用快捷方式形式时无法访问,但是有效的
TYPE
是从
ITERABLE
继承时由
new\u cursor
功能返回的类型,不是吗?@Pipo是的,我添加了一段提到它的内容。