ページに戻る
-#?diaryanchor -e SPLイテレータラッパ&[PHP][Sloth]+ #?diaryanchor SPLイテレータラッパ&[PHP][Sloth] |< 拙者、ちかごろPHPでコードを書く機会が多いでござる。 このPHP、なんというか、関数のインターフェース的に個人的に[[残念な仕様|http://rainyday.blog.so-net.ne.jp/2007-10-14-1]]が多いと思っていたでござる。 そんな折、[[SPLのイテレータ|http://php.net/manual/ja/spl.iterators.php]]はなかなか便利そうではあるが、もっと関数的に使いたいと思ったでござるよ。 そこで拙者、SPLイテレータのラッパを書くことにしたでござる。 ラッパを書くにあたってFollow,LazyMapなど[[anatoo氏|http://d.hatena.ne.jp/anatoo/]]の[[一連のエントリ|http://d.hatena.ne.jp/anatoo/archive?word=PHP]]を参考にしたでござる。多謝。ニンニン。 [[http://github.com/no22/Sloth]] Sloth/AutoLoad.php をrequireすると使えるようになるでござる。PHP5.2以降対応。 ではお約束のfibonacci >| -$fibs = iter(array(1,1), fn('array($e[1],$e[0]+$e[1])'))->map(fn('$e[0]'));-$fibs->take(40)->each(fn('print("$x,")'));+ $fibs=iter(array(1,1),fn('array($e[1],$e[0]+$e[1])'))->map(fn('$e[0]')); + $fibs->take(15)->each(fn('print("$x,")')); |< >| 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610, |< 遅延リスト風に使えるでござる。全く趣味の産物ナリよ。 GitHubに置いたので自由に改変して良いナリ。 >| #enddiary