タグ

generatorに関するmiggitのブックマーク (4)

  • コードをまとめる技術としてのイテレータとジェネレータ - Qiita

    ジェネレータが5.5から入ったことで完全に空気と化した(?)PHPのイテレータを、ちょっと違う面からまとめたいと思います。 コードをまとめるということ Don't Repeat Yourself(DRY)という言葉があります。達人プログラマーというに出てくる言葉です。 信頼性の高いソフトウェアを開発して、開発そのものを簡単に理解したりメンテナンスできるようにする唯一の方法は、DRY原則に従うことです。 「すべての知識はシステム内において、単一、かつ明確な、そして信頼できる表現になっていなければならない。」 (p. 27) 端的に言えば「同じことを二度書いてはいけない」ということですね。この原則を当てはめなくてもいい例外のパターンもいくつかあるのですが。。 コードにおいて「同じことを二度書いてはいけない」を忠実に守ろうとすると、同じコードを何度も書きたくなったら、何らかの方法でそのコードを

    コードをまとめる技術としてのイテレータとジェネレータ - Qiita
  • Ajaxload - Ajax loading gif generator

    Indicator type : Background color : # Transparent background Foreground color : # Create easily your own ajax loader icon : Select the type of indicator you want Enter the background code color you want (tick "Transparent background" if you don't want one Enter the foreground code color you want Press "Generate it"

  • PHPのジェネレータはイテレータより速い - hnwの日記

    先日の記事「PHPのジェネレータの実装を調べてみた」で僕は次のように書きました。 GeneratorクラスはIteratorインターフェースを実装しており、対応するPHPメソッドを持っています。また、Cで実装した場合のみ指定できるイテレータ関数も実装しています。このように両方が指定されている場合、foreachループではCの関数が呼ばれ、イテレータメソッドを明示的に指定した場合はPHPメソッドの方が呼ばれます。 ところで、イテレータに対応するPHPメソッドとC関数となぜ2つとも実装する必要があるのでしょうか。実は、PHPメソッドの方だけ実装すれば正常に動作します。C関数を実装する理由は速度面のメリットからだというのが僕の理解です。C関数は関数ポインタで単に呼び出せるのに対し、PHPメソッドの呼び出しは命令実行器の状態保存・復元の必要があるなど、呼び出しのコストがやや高いのです。 PHPのジ

    PHPのジェネレータはイテレータより速い - hnwの日記
  • PHP5.5のジェネレータをSPLのイテレータと組み合わせてみる - hnwの日記

    リリースが間近になったPHP5.5ではジェネレータが導入される予定です。これはイテレータを簡単に記述する文法を導入するもので、Pythonのジェネレータに非常に良く似ています。 もう少し詳しく説明しましょう。PHP5.5では、yieldというキーワードが導入されました。これはジェネレータで値を受け渡すための構文です。このyieldを含む関数はジェネレータ関数と呼ばれます。関数がジェネレータ関数かどうかは、PHPの解釈のタイミングで自動的に判断されます。 ジェネレータ関数が呼ばれると、ジェネレータ関数に対応するジェネレータオブジェクトが返されます。関数呼び出しの時点ではジェネレータ関数の中身は1行も実行されません。ジェネレータオブジェクトから値を取り出すタイミングで初めてジェネレータ関数の先頭からyield文までが実行され、yieldされた値を取り出して停止します。イテレータから次の値を取り

    PHP5.5のジェネレータをSPLのイテレータと組み合わせてみる - hnwの日記
  • 1