記事の内容
この記事では、PHPのyield構文について説明します。
yieldはジェネレーター関数の一つです。
PHPのバージョンは、7系です。
yieldのメリット
yeildには、以下の2つのメリットがあります。
- 処理をまとめることができる
- メモリの節約ができる
では、実際に使い方を見ていきたいと思います。
yieldの使い方
ここでは、「1から3までをループする」という部分を共通化して、yieldにしました。
ここで最初に確認して欲しいことは、処理の流れです。
ジェネレーター関数の中とforeachの中が、交互に実行されているのが、yieldの特徴です。
そして、もう一点、重要なポイントがあります。
このプログラムでは、以下の3つのことを実行していますが、ループを回しているのは一回だけです。
それは、ジェネレーターにより「1から3まで」というループ処理を共通化しているから、できることです。
- 「1から3まで」を表示する
- 「1から3まで」に2を掛けて表示する
- 「1から3まで」を合計する
ジェネレーターを使わないで、同じプログラムを書いた場合は、以下のようなコードになります。
この場合、ループ処理「for」が3回、記述されていることがわかります。
yieldを連想配列にすることもできます。
yieldのメモリ効率を確認
通常のループを使う場合とyieldを使った場合では、メモリの消費量に差がつきます。
配列の中身を順番に処理したい時に、「配列を全て作ってから処理をする」と「配列を作りながら処理をする」という2つの差が出た形です。
配列に保存しようとした値が多すぎて、PHPでエラーが出ます。
yieldを使った場合には、エラーが出ません。
-
【Python入門】yieldを使って処理をまとめる方法
目次1 1から5までを表示させる処理2 yieldの処理 1から5までを表示させる処理 まずは、普通に以下の関数を実装します。 1から5の数字を表示する関数 1から5の数字を足して、合計を表示する関数 1から5の数字を掛けて、合計を表示する ...
-
【Ruby入門】ブロック(yield)を使う理由
目次1 1から5までを表示させる2 1から5までループする処理を共通化させる3 yieldを使う4 eachにblockを渡す 1から5までを表示させる 1から5までを表示させる処理は、普通にeachを回しながら表示させる方法でもできるし、 ...