タグ

ブックマーク / tociyuki.hatenablog.jp (3)

  • Tociyuki::Diary - perlでのクロージャの3パターン

    id:naoya さんが Perl のクロージャの使い道を考えておられるようです。便上して、私が良く使う、3つのパターンを紹介してみます。なお、単なるコード・リファレンスとしての使い方は除外して付随するコンテキストが意味をもつクロージャの場合に限ります。 (2006年2月14日修正 use Fcntl のパラメータに :DEFAULT が抜けていたので追加しました。) コールバック・パターン イテレータにクロージャを渡して、イテレータの中から繰り返し呼び出してもらってコンテキストに副作用を及ぼす使い方です。クロージャの使い方の中でも最も自然に使えるものだと思います。以下、Ruby のブロック呼び出しっぽくコード・リファレンスを $yield パラメータに渡すことにします。へそ曲がりに BBS の CGI コード用に flock による排他ロックを例にしてみます。 package Mutex

    Tociyuki::Diary - perlでのクロージャの3パターン
    Qma
    Qma 2006/01/20
    クロージャ
  • prototype.js で Floating Leaflets - Tociyuki::Diary

    prototype.js を使って付箋紙風の DHTML を作ってみました。BSD ライセンスにしておきます。 ⇒ https://tociyuki.sakura.ne.jp/test/postit.html 元ネタは、萩原 真一さんのJavaScript Tips collectionの「付箋紙」 Ver1.1です。 といっても、参考にしたのはアイデアとスタイルで、元ネタのスクリプトは読んでいません。 (12月3日。Post itは登録商標だったなと思い当たりましたので、名称変更しました。) ブラウザ依存性を prototype.js が吸収してくれますので、記述が短くなり、かつ見通し良く、ロジックに集中できるのはありがたいことで、あっというまにできあがってしまいました。 ところで、元ネタに次の説明があるのですが、Firefox 1.5 と MSIE 6 で試した限りでは、innerHT

    prototype.js で Floating Leaflets - Tociyuki::Diary
  • クロージャによるOOP - Tociyuki::Diary

    ふと思いついて試してみたのですが、Perlでもクロージャを使ったOOPを扱えるみたいです。たぶん既出なのだろうと思いますが、見つけきれなかったのでエントリーを打ってみます。 例1. UP/DOWNカウンタ sub Counter::new { my $this = {}; $this->{class} = shift; my( $value, $step ) = ( 0, 1 ); $this->{step} = sub { $step = shift if @_ > 0; $step }; $this->{value} = sub { $value = shift if @_ > 0; $value }; $this->{up} = sub { $value += $step }; $this; } my $c1 = Counter->new(); $c1->{value}->(10);

    クロージャによるOOP - Tociyuki::Diary
  • 1