NOEMBLEM/エンブレムが設定されていません。

メールの詳細(メール表示)

件名:

Re: Iterator patterns in Ruby

差出人: Tatsuhiko Miyagawaさん
送信日時 2001/09/18 03:46
ML.NO [DP/ML:1002]
本文:

宮川です。

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/

添付:
 読み込み中...

このメールは下記のメールに対する返信です:

このメールには下記のメールが返信されています:

【PR】お小遣いメーリスふくびきレシピ無料ホームページ