件名:

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トピックに対するレス(返信)です:
[DP/ML:0997] Iterator patterns in Ruby  (TAKAHASHI Masayoshiさん)
このMLトピックには下記のMLトピックがレス(返信)されています:
 読み込み 中...
<<1001:Re: [DP/ML:0997] Iterator patterns in Ruby 1003:Re: [DP/ML:1002] Re: Iterator patterns in Ruby>>
MLトピック表示
切替 トピック表示 メール表示
MLトピック一覧

MLトピック検索:
MLトピックの詳細(メール表示)
MLトピック表示
  切替 トピック表示 メール表示
MLトピック一覧

メーリングリストでつながる!ひろがる!みんなのHappyコミュニティ!

詳細検索
NOEMBLEM/エンブレムが設定されていません。
デザインパターン・メーリングリスト (3966)
 
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
メンバーリストは非公開です。
メンバーの日記/フォト/動画
メンバーの投稿は非公開です。
 読み込み中...