経過時刻を知ることができる。経過時刻を知ることができる。}}関数ジェネレータとは、サブーチンを生成するサブルーチンのことです。関数ジェネレータを利用すれば、複数のクロージャを生成することができます。生成されるそれぞれのクロージャは、データを独自に持ちます。値は、メモリ上にクロージャ毎に作成されます。戻り値はサブルーチンへのリファレンスになっています。これは、Perlでは、サブルーチンそのものを戻り値にすることができないためです。create_timer();戻り値は、サブルーチンへのリファレンスになります。クロージャを呼び出す$timer1->();サブルーチンへのリファレンスをうけったので、デリファレンスして呼び出します。クロージャの利用方法クロージャを利用すると、「基準になる時点での状態」と「現時点での状態」の変化を簡潔に記述することができます。クラスを作れば同じことを実現できますが、クラスを作りたくない場合は、クロージャを利用します。クラスをひとつ作れば、クラスを管理する手間が増えます。この例のようにシンプルな記述のためにわざわざクラスを作りたくない場合に、クロージャを使います。)クロージャに参照される「変数を初期化」するクロージャに参照される変数を初期化するサンプルです。関数ジェネレータに引数として渡す。クロージャに参照される変数を初期化する。1から見て符号が反転しています。クロージャを作成したときに初期化される。クロージャを呼び出したときの引数。クロージャを作成したときに初期化される。クロージャを呼び出したときの引数。}}クロージャを作成するときに、クロージャが参照する変数を初期化することができます。クロージャを作成するときに引数として渡します。それを、関数ジェネレータの引数として受け取って、変数に設定します。クロージャの概念をクラスとの対比でわかりやすく説明するクロージャの概念はぼやっとしていて輪郭を捕らえるのが難しいです。わたしなりにできるだけ理解できるように解説したいと思います。クロージャとはクロージャーとは、データとそのデータを操作する関数のセットである。データはカプセル化されていて、データを操作できるのは、クロージャ内部の関数だけである。データの初期化が可能である。データごとに個々のインスタンスを作成することができる。関数はインスタンスから呼び出される。次に、オブジェクト指向におけるクラスについて。クラスとはクラスとは、データとそのデータを操作する関数のセットである。データはカプセル化されていて、データを操作できるのは、クラス内部の関数だけである。データの初期化が可能である。データごとに個々のインスタンスを作成することができる。関数はインスタンスから呼び出される。ここで気づいてほしいことは、クラスとクロージャは、実は同じものだということです。Perlの実装においては、クラスとクロージャは、文法的な書き方において違いがあります。機能的には同じものです。クロージャとは簡易なクラスのことだと思えば理解しやすいです。(クロージャの概念は、もう少し広いけれど、最初のうちは簡易なクラスだと理解する。)クラスとクロージャの相違点クロージャは、クラス名を持たない。いう形でインスタンスを生成する。クロージャは、継承できない。クラスのように継承をすることはできません。クラスとクロージャを使って、数を数えるための機能(カウンター)を実装してみます。クロージャでは、サブルーチンへのリファレンスを使ってメソッドを実装する。"\n";このようにクラスとクロージャは、よく似ています。次回は、コードを解説します。Found)クロージャでクラスと同じことができるけれど、Perlではクロージャの生成は、オブジェクトの生成よりもコストがかかるそうです。クロージャは、継承できないと書きましたが継承できるみたいです。(やりかたは今のところは思いつきません。業務に役立つPerlログ解析など日本語を含むテキスト処理の実践!案内YouTubeでもっと簡単にプログラミングを学ぶならPerlゼミちゃんねるLinuxコマンドを学ぶならLinuxサーバー管理入門Webデザインを学ぶならWebデザイン入門Web開発を始めるななMojoliciousスタートアップブログを作るならGiblogプログラミングの勉強会ならPerl入学式お問合せはこちらPerlは、テキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。Linuxサーバー管理でのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意。Mojoliciousを使ったWebスタートアップも。Perlは、gitやopensslなどUnix/Linuxミドルウェアの支援ツールとして採用されています。このサイトはGiblogで製作されています。