関数型っぽくなるライブラリがあるとのことで試してみる。
<?php
use function iter\range;
use function iter\map;
use function iter\toArray;
use function iter\fn\operator;
require_once __DIR__ . '/iter-master/src/bootstrap.php';
$nums = range(1, 10);
$numsTimesTen = toArray(map(operator('*', 10), $nums));
// => array(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
名前空間についての学習が全然出来ていないので間違った理解をしているかもしれないけれど、
range
は標準関数でもあるのでnamespace
でiter
と名前を付けて
iter
のrange
なので標準関数とは別物だよーって教えてあげている、のだと思ってる。
use
を上で行わないのであれば、
$numsTimesTen = iter\toArray(iter\map(iter\fn\operator('*', 10), $nums));
というハイパー冗長プログラムになってしまう気がする。
それは避けたい。
でも同一ファイル内でiter
の関数全部使ったとしたら、
それはそれですごい量のuse
が上に書かれる気がする。現時点でも十分うわーってなる。
それも避けたい…。
でもuse
はファイル単位らしく、include
しても継承されないとどっかで拝見したんだよね…。
うーん、上手く利用してる人はどうしてるんだろう