件名:

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/エンブレムが設定されていません。
デザインパターン・メーリングリスト (3906)
 
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 1
メンバーリストは非公開です。
メンバーの日記/フォト/動画
メンバーの投稿は非公開です。
 読み込み中...