相关疑难解决方法(0)

什么时候调用迭代器方法?

这个问题与其他关于使块可迭代的问题在同一个问题,但似乎揭示了mixins的一个不同问题(或者对我的语法有不同的误解).什么Iterable是使数据结构有效迭代,也就是说,你可以通过在它之前创建循环for.

Iterable用作对象的API,可以使用for构造和相关的迭代构造(如超运算符)进行迭代.

所以让我们尝试将其付诸实践:

 my &logger = -> $event  {
    state %store;
    if ( $event ) {
        %store{ DateTime.new( now ) } = $event;
    } else {
        %store;
    }
}

role Forable does Iterable {
    method iterator(&self:) {
        self( Nil );
    }
}

logger( "One" );
logger( "Two" );

&logger does Forable;

.say for &logger;
Run Code Online (Sandbox Code Playgroud)

这根本行不通; say应用于&logger一个简单的项目.但是,如果我们将最后一句改为:

.say for &logger.iterator;
Run Code Online (Sandbox Code Playgroud)

我猜这表明该角色实际上正在工作,并且混入.由于类型为&loggeris Block+{Forable},如果Iterable没有直接混合,它可能不起作用.事实上,does Iterable从 …

mixins perl6

4
推荐指数
2
解决办法
145
查看次数

标签 统计

mixins ×1

perl6 ×1