| 件名: | Re: Iterator patterns in Ruby |
|---|---|
| MLNo. | [DP/ML:1002] |
| 差出人: | Tatsuhiko Miyagawaさん |
| 送信日時: | 2001/09/18 03:46 |
| 本文: | 宮川です。
Perl だと配列にはイテレータは登場せず、ハッシュの each() がそれに あたります。 オブジェクトをハッシュデータ構造と透過に扱う際に、tie ハッシュのイ ンターフェースで NEXTKEY() というメソッドを実装しますが、これがま さに iterator なので、それを内部的に使った実装のサンプルをつくって みました。 というか、自分で実装は何もしてないんですけど ;) use strict; package Book; use fields qw(name); sub new { my($class, $name) = @_; my Book $self = fields::new($class); $self->{name} = $name; $self; } package Bookshelf; use base qw(Tie::IxHash); sub append_book { my($self, $book) = @_; $self->STORE($book => 1); } *next = &Tie::IxHash::NEXTKEY; package main; my $shelf = Bookshelf->new; $shelf->append_book(Book->new('Around the World in 80 Days')); $shelf->append_book(Book->new('Bible')); $shelf->append_book(Book->new('Cinderella')); while (my Book $book = $shelf->next) { print $book->{name}, "n"; } 通常のハッシュでは key の順番が保存されないため、CPAN モジュールの Tie::IxHash を使っています。 On Mon, 17 Sep 2001 20:12:59 +0900 TAKAHASHI Masayoshi <maki@…> wrote: > Rubyについて、話だけでは何なので、結城さんの『パターン入門本』の > サンプルをRubyで書いてみました。 -- Tatsuhiko Miyagawa mod_perl Mailing List mailto:miyagawa@… http://bulknews.net/lib/ml/ |
|---|---|
| 設定タグ: | |
| 添付: |
このMLトピックは下記のMLトピックに対するレス(返信)です:
このMLトピックには下記のMLトピックがレス(返信)されています:
読み込み
中...| <<1001:Re: [DP/ML:0997] Iterator patterns in Ruby | 1003:Re: [DP/ML:1002] Re: Iterator patterns in Ruby>> |










