[#29469] エラーを捕まえたいのですが ... — Sakae Kobayashi <sakae@...>

困った時に出てくる、小林榮です。

12 messages 2001/05/01

[#29490] Re: [ruby-talk:14555] Ruby as a Mac OS/X scripting language — maili31s@... (SugHimsi == SUGIHARA Hiroshi)

すぎむし速報。↓だそうです。

12 messages 2001/05/02

[#29524] tr range? — kiri@...

桐山です。

17 messages 2001/05/06
[#29526] Re: tr range? — Koji Arai <JCA02266@...> 2001/05/06

新井です。

[#29644] rwiki.rb でエラー — norio goto <goto@...>

お世話になります、後藤@横河工事です。

18 messages 2001/05/14
[#29645] Re: rwiki.rb でエラー — m_seki@... 2001/05/14

[#29646] Re: rwiki.rb でエラー — norio goto <goto@...> 2001/05/14

後藤@横河工事です。

[#29675] with(obj){ } が欲しい。 — Take_tk <ggb03124@...>

例によって、ワタシ好みののりクエストですみません。

24 messages 2001/05/15
[#29694] Re: with(obj){ } が欲しい。 — "K.Kosako" <kosako@...> 2001/05/17

Take_tkさんの<20010515205133.DFBA.GGB03124@nifty.ne.jp>から

[#29707] OBJECT DAY2001 — "K.Kosako" <kosako@...>

OBJECT DAY2001から帰ってきました。

71 messages 2001/05/18
[#29712] Re: OBJECT DAY2001 — matz@... (Yukihiro Matsumoto) 2001/05/18

まつもと ゆきひろです

[#29719] Re: OBJECT DAY2001 — WATANABE Tetsuya <tetsu@...> 2001/05/21

渡辺哲也です。

[#29731] YARPC 19101 (Re: OBJECT DAY2001) — TAKAHASHI Masayoshi <maki@...> 2001/05/21

YARPC関連で動いてお騒がせしている(_o_)高橋征義です。

[#29792] Re: YARPC 19101 — akira yamada / やまだあきら <akira@...> 2001/05/27

[#29794] Re: YARPC 19101 — Minero Aoki <aamine@...> 2001/05/27

あおきです。

[#29803] Re: YARPC 19101 — Hiroshi IGARASHI <iga@...> 2001/05/27

いがらしです。

[#29721] Cygwin で Ruby をコンパイルするとエラーがでます。 — "Inoue" <inoue@...>

はじめまして、最近Rubyをはじめました井上と申します。

10 messages 2001/05/21

[#29788] marshaled time format differ — IWATSUKI Hiroyuki <don@...>

岩月と申します。

19 messages 2001/05/25
[#29789] Re: marshaled time format differ — matz@... (Yukihiro Matsumoto) 2001/05/25

まつもと ゆきひろです

[#29790] Re: marshaled time format differ — IWATSUKI Hiroyuki <don@...> 2001/05/26

岩月と申します。

[#29823] Re: marshaled time format differ — IWATSUKI Hiroyuki <don@...> 2001/05/27

岩月と申します。

[#29853] "" で行われる展開を eval 無しで… — ABE Shigeru <shiger-a@...>

 みなさま、はじめまして。阿部といいます。

17 messages 2001/05/28
[#29854] Re: "" で行われる展開を eval 無しで… — rubikitch <rubikitch@...> 2001/05/28

From: ABE Shigeru <shiger-a@nifty.com>

[#29941] Ruby ライセンスについて — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

38 messages 2001/05/31
[#29942] Re: Ruby ライセンスについて — Takahiro Kambe <taca@...> 2001/05/31

In message <991297854.779223.23013.nullmailer@ev.netlab.zetabits.com>

[#29944] Re: Ruby ライセンスについて — "Akinori MUSHA" <knu@...> 2001/05/31

At Thu, 31 May 2001 18:00:18 +0900,

[ruby-list:29627] Re: Enumerator

From: "Akinori MUSHA" <knu@...>
Date: 2001-05-10 12:43:30 UTC
List: ruby-list #29627
At Thu, 10 May 2001 18:29:34 +0900,
Shin-ichiro HARA wrote:
> > その後、ちょっと頭をひねり、メソッドの再定義はやはり邪悪な
> >感じが拭えないと思い直し、トリック抜きの新しいものを考えました。
> >
> > 既存のものや今後登場するクラス・モジュールに一切変更を強いず、
> >また each/each_*/*_each 等のメソッドの再定義も行わない方法です。

 ちょっと補足します。


 なぜ標準にこだわるかというと、

	日頃、 each や collect を当たり前のように使っていたが、
	それが each_with_index, each_byte, foreach になった途端、
	回りくどく配列を用意したりしないといけなくなる

というがっかり感は

	require 'XXX' すればこうできるよ

では救えないような気がするからです。理由は:

	require することで Enumerate::enum_with が定義されると
	したら、それは結局トリックの範疇になってしまう

	one-liner で使うときにめんどくさい

	用途やデザインに関係なく、いつでも使おうと思ったときに
	その場で使いたい類のものだから、 require にはそぐわない

などです。

 実際、私も岡田さん達とアイデアを一緒に考え、結果生まれた
each_delegator.rb はとても素晴らしいと思いましたが、いざ自分で
使おうとするといつも、「ここで一箇所 each_with_index を collect
したいためだけに require 'each_delegator' するの?」と疑問を
感じてしまい、結局使わず終いでした。

		*		*		*

 さて、 Enumerator の方はシンプルかつ汎用的であまり問題はない
と思っているのですが、 enum_with メソッドについては議論の余地が
いくつかあると覚悟しています。私なりに三点考えてみました。


1. Enumerable 以外でも enumerate したいことがあるのではないか?
特に、クラスメソッドとして foreach や each_* を用意している例が
ObjectSpace や Net::POP3 など現実にいくつかあるが、当然 Class は
Enumerable ではない。

→ 確かにそうかも。Object#enum_with はどうでしょうか。


2. enum_with は本当に必要?

→ enum_with があるといくつもチェーンして

	"abc".enum_with(:each_byte).
	  enum_with(:each_with_index).to_a

などとできるし、前から素直に読めるのが Ruby らしくていいと思う。
ただし、 enum_with についてコンセンサスが得られない場合は、
Enumerator だけでも導入していただければだいぶ救われます。


3. enum_with の名前はこれでいいのか?

→ enum, with なども考えられる。ただ、ともに少し意味が曖昧で、
ジェネリック過ぎる感じがする。これでいいのだ。


 ぜひみなさんのお考えも聞かせてください。

> こういうのも手軽でいいと思います。
> 
> require "forwardable"
> class Object
>    def transfer(a, b)
>      me = clone.extend(SingleForwardable)
>      me.def_singleton_delegator(:self, a, b)
>      me
>    end
> end
> p "abc".transfer(:each_byte, :each).collect{|x| x} #=> [97, 98, 99]

 なるほど。参考になります。

> clone が重い感じですけどね。

 そうですね。やはり forwardable は一つ上のレベル (モジュール・
クラス) で使うのが適していると思います。デザインパターン絡みなど、
モジュールやクラスで使うものは、パターンをモジュール化して require
するのが美しいと思います。

 逆に、今回の件のようなクラス横断的な細かい使い勝手の問題では、
「require が必要な時点で負け」というのが私の認識です。 ;)


P.S.
 ところで、参考のために net/*.rb を見ていたのですが、せっかく
each を持っているのに include Enumerable していないようでした。

# そんなときこそ enum_with(:each) が。 :)

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Freeze this moment a little bit longer, make each impression
  a little bit stronger..  Experience slips away -- Time stand still"

In This Thread