[#13087] importing forwardable — "Akinori MUSHA" <knu@...>

 石塚さんの forwardable.rb を標準添付ライブラリにするべく、

11 messages 2001/05/02

[#13169] SizedQueue#pop causes deadlock — "Okada Jun" <yun@...>

岡田です。

18 messages 2001/05/13
[#13171] Re: SizedQueue#pop causes deadlock — "Akinori MUSHA" <knu@...> 2001/05/13

At Sun, 13 May 2001 14:11:18 +0900,

[#13176] Re: SizedQueue#pop causes deadlock — matz@... (Yukihiro Matsumoto) 2001/05/13

まつもと ゆきひろです

[#13177] Re: SizedQueue#pop causes deadlock — "Akinori MUSHA" <knu@...> 2001/05/13

At Mon, 14 May 2001 00:24:45 +0900,

[#13187] Re: SizedQueue#pop causes deadlock — matz@... (Yukihiro Matsumoto) 2001/05/13

まつもと ゆきひろです

[#13202] Re: [ruby-list:29672] Re: Enumerator — "Akinori MUSHA" <knu@...>

 ruby-dev に移ります。

26 messages 2001/05/15
[#13208] Re: [ruby-list:29672] Re: Enumerator — matz@... (Yukihiro Matsumoto) 2001/05/15

まつもと ゆきひろです

[#13259] Enumerator -- Round 2 — "Akinori MUSHA" <knu@...>

 もう一度、 Enumerable/Enumerator についてみなさんのご意見を

29 messages 2001/05/20
[#13260] Re: Enumerator -- Round 2 — matz@... (Yukihiro Matsumoto) 2001/05/20

まつもと ゆきひろです

[#13265] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/21

At Mon, 21 May 2001 06:04:32 +0900,

[#13268] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/21

原です。

[#13270] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/21

At Mon, 21 May 2001 15:00:11 +0900,

[#13289] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/22

原です。

[#13290] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/22

At Tue, 22 May 2001 19:02:10 +0900,

[#13291] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/22

原です。

[#13293] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/22

At Tue, 22 May 2001 20:57:02 +0900,

[#13305] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/24

原です。

[#13322] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/24

At Thu, 24 May 2001 15:44:14 +0900,

[#13277] ext/dbm in ruby 1.7 — Kazuhiro NISHIYAMA <zn@...>

ruby 1.7のext/dbmですが、

16 messages 2001/05/21
[#13280] Re: ext/dbm in ruby 1.7 — matz@... (Yukihiro Matsumoto) 2001/05/21

まつもと ゆきひろです

[#13292] Integer("X") rescue -1 が parse error — YASUI Kentarow <kenyasui@...>

安井です。

18 messages 2001/05/22
[#13294] Re: Integer("X") rescue -1 が parse error — matz@... (Yukihiro Matsumoto) 2001/05/22

まつもと ゆきひろです

[#13295] Re: Integer("X") rescue -1 が parse error — "Akinori MUSHA" <knu@...> 2001/05/23

At Wed, 23 May 2001 08:59:50 +0900,

[#13300] 1.6.4 preview3 (Re: Re: Integer("X") rescue -1 が parse error) — matz@... (Yukihiro Matsumoto) 2001/05/24

[#13304] Re: 1.6.4 preview3 (Re: Re: Integer("X") rescue -1 が parse error) — "Akinori MUSHA" <knu@...> 2001/05/24

At Thu, 24 May 2001 14:15:04 +0900,

[#13428] mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

19 messages 2001/05/31
[#13435] Re: mswin32/ming32 system patch (experimental) — nobu.nakada@... 2001/06/01

なかだです。

[#13442] Re: mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...> 2001/06/01

こんにちは、なかむら(う)です。

[#13446] Re: mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...> 2001/06/02

こんにちは、なかむら(う)です。

[#13450] Re: mswin32/ming32 system patch (experimental) — nobu.nakada@... 2001/06/04

なかだです。

[ruby-dev:13226] Re: [ruby-list:29672] Re: Enumerator

From: Shin-ichiro HARA <sinara@...>
Date: 2001-05-17 06:30:47 UTC
List: ruby-dev #13226
原です。

この問題、このメーリングリストでも長年の懸案なので、今度こそ
決めてもらいたいです。(^^

で、なんでややこしいかというと、色んなパターンがあり得てなか
なか仕様を絞れないんですね。でも、なんとか解決しそうなので、
期待しています。

と言いつつ、ちょっと後退させてしまうかもしれないですが、幾つ
かコメント。(^^;


>  a = Enumerator[s, :each_byte].with_index.collect { |b,i| "#{i}: #{b}" }

これですが、やっぱり s.Enumerator[:eac_byte].with ... みたいに
繋げて書きたいという欲求がどうしてもあり、何とか出来ないでしょう
か。


Enumerator というクラスですが、ほとんどダミーですよね。それをあ
えてクラスとして定義する必要はあるのか。例えば、匿名のオブジェク
トでも十分では?例えばこんな風に、、、

def Enumerable.[](enumobj, method, *args)
   e = Object.new.extend self
   
   e.instance_eval do
     @enumobj = enumobj
     @method = method
     @args = args
   end
   
   def e.each(&block)
     @enumobj.send(@method, *@args, &block)
   end
   
   def e.with_index()
     Enumerable[self, :each_with_index]
   end
   
   e
end

if __FILE__ == $0
   s = 'abcde'
   a = Enumerable[s, :each_byte].with_index.collect { |b,i| "#{i}: #{b}" }

   puts a
end


それから、既に話が出ていますが、これは Enumerable に限ったことではなく、
他のモジュールでも似たことをしたくなるのではないか。それなら最初から汎用
の形を取っていたほうが得策かも。例えば次のような仕様はどうでしょう。

module S
   def self.[](iter)
     iter = iter.id2name if iter.is_a? Symbol

     mod = Module.new

     mod.module_eval <<-end_
       def [](enumobj, method, *args)
         e = Object.new
         e.extend self
         
         def e.set_instance_var(*a)
           @mod, @enumobj, @method, *@args = a
         end
         e.set_instance_var(self, enumobj, method, *args)
         
         def e.#{iter}(&block)
           @enumobj.send(@method, *@args, &block)
         end
         e
       end
     end_

     mod
   end
end

Enumerable.extend S[:each]

if __FILE__ == $0
   s = 'abcde'
   a = Enumerable[s, :each_byte].collect { |b| b }

   puts a
end

まずはこのぐらいで。

In This Thread