2.3PHP复合类型之可迭代(iterable)

可迭代(Iterable)类型的对象是任何 array 或 实现了 Traversable 接口的类的对象,否则会抛出一个 TypeError异常。

Traversable 接口是无法被单独实现的基本抽象接口,必须由 IteratorAggregate 或 Iterator 接口实现。

可迭代(Iterable)类型的对象能用 foreach 迭代,也可以和 生成器 里的 yield from 一起使用。

foreach迭代

可迭代(Iterable)类型的对象可以用作函数的参数 或 返回类型。

//函数的参数
function foo(iterable $iterable) {
    foreach ($iterable as $value) {
        // ...
    } 
}

//函数的返回类型
function bar(): iterable {
    return [1, 2, 3];
}

生成器返回类型

function gen(): iterable {
    yield 1;
    yield 2;
    yield 3;
}

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phplang/5319.html

(1)
上一篇 2021年2月2日 20:00
下一篇 2021年2月3日 19:47

相关推荐

  • 5.1PHP语言的重载(Overloading)

    PHP的重载与其它绝大多数面向对象语言不同。 传统的重载是用于提供多个同名的类中的方法,但各方法的参数类型和个数不同来重新加载不同的方法。 当调用当前环境下未定义或不可见的类属性或方法时,PHP通过调用魔术方法(magic methods)来实现重新加载功能的。 所有的重载方法都必须被声明为 public 。…

    PHP语言教程 2021年5月1日
    04680
  • 5.2PHP语言的生成器(Generator)

    生成器提供了一种更容易的方法来实现简单的对象迭代。 相比较定义类实现 Iterator 接口的方式,相同的是调用生成器函数时会返回一个内部的 Generator 类的对象,该 Generator 类实现了 Iterator 接口。不同的是,生成器性能…

    PHP语言教程 2021年5月2日
    05200
  • 3.3PHP语言的抽象(Abstract)类和接口(Interface)

    抽象类 PHP支持抽象类和抽象方法。定义为抽象的类不能被实例化但可以被子类继承。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控…

    PHP语言教程 2021年3月3日
    07610

发表回复

登录后才能评论