[#29469] エラーを捕まえたいのですが ... — Sakae Kobayashi <sakae@...>
困った時に出てくる、小林榮です。
まつもと ゆきひろです
In message <988708753.422219.10637.nullmailer@ev.netlab.zetabits.com>
[#29471] rd2man について — "NAITOH Jun" <naitoh@...>
こんにちは、内藤と申します。
[#29480] xpstore — akira yamada / やまだあきら <akira@...>
[#29490] Re: [ruby-talk:14555] Ruby as a Mac OS/X scripting language — maili31s@... (SugHimsi == SUGIHARA Hiroshi)
すぎむし速報。↓だそうです。
古暮でございます。MacOS X をいじり始めて一週間程度なのですが,
始めて投稿します。福田と申します。メインにはMacを使っていますので、Rubyを直
古暮でございます。
こんにちは、近藤と申します。
古暮でございます。
[#29504] クラスブラウザ with ReFe — kadu <kadu3@...16.alpha-net.ne.jp>
こんにちは。kadu です。
[#29513] drb-1.3.2 — Masatoshi SEKI <m_seki@...>
[#29521] A problem with the latest irb — "Akinori MUSHA" <knu@...>
IRB 最新版(0.7.3)ですが、どういうわけか、定義したメソッドを
[#29524] tr range? — kiri@...
桐山です。
新井です。
桐山です。
新井です。
[#29544] enriching standard extention libraries: syslog, zlib, etc. — "Akinori MUSHA" <knu@...>
Syslog モジュールを標準添付にするというのはどうでしょうか。
[#29547] strftime.c でのエラー — "Kazuaki Miyauchi" <miyauchk@...>
宮内といいます。
[#29550] UDP でバイナリデータを送りたいのですが? — "Kenji Takahashi" <kenji4553@...>
はじめまして。
[#29587] duplicate fragment identifiers in ruby-refm.html — Tanaka Akira <akr@...17n.org>
ふと気がついたのですが、
[#29597] media watch 2001.05.08 — Noritsugu Nakamura <nnakamur@...>
[#29603] Importing shell.rb — "Akinori MUSHA" <knu@...>
At Mon, 7 May 2001 14:50:32 +0900,
[#29604] Importing eachdelegator.rb — "Akinori MUSHA" <knu@...>
少し前に登場した、岡田さん作の EachDelegator:
まつもと ゆきひろです
At Wed, 9 May 2001 17:58:34 +0900,
原です。
[#29644] rwiki.rb でエラー — norio goto <goto@...>
お世話になります、後藤@横河工事です。
後藤@横河工事です。
後藤@横河工事です。
In <20010514192948A.goto@yokogawa-kouji.co.jp>
後藤@横河工事です。
後藤@横河工事です。
後藤@横河工事です。
[#29647] String#index — OHARA Shigeki <os@...>
大原です。
[#29665] frozen string in a |= b — kiri@...
桐山です。
[#29675] with(obj){ } が欲しい。 — Take_tk <ggb03124@...>
例によって、ワタシ好みののりクエストですみません。
さくです。
Take_tkさんの<20010515205133.DFBA.GGB03124@nifty.ne.jp>から
たけ(tk)です。
まつもと ゆきひろです
たけ(tk)です。
まつもと ゆきひろです
たけ(tk)です。
[#29707] OBJECT DAY2001 — "K.Kosako" <kosako@...>
OBJECT DAY2001から帰ってきました。
まつもと ゆきひろです
渡辺哲也です。
YARPC関連で動いてお騒がせしている(_o_)高橋征義です。
あおきです。
なひです。
なひです。
いがらしです。
なひです。
あおきです。
[#29720] rand(1<<32) — TAKEUCHI Hideki <take@...>
竹内です。
[#29721] Cygwin で Ruby をコンパイルするとエラーがでます。 — "Inoue" <inoue@...>
はじめまして、最近Rubyをはじめました井上と申します。
[#29759] WinNT Ruby CGI KILL? — "Inoue" <inoue@...>
井上です。
[#29766] インストールができません。 — Jun-ichi Murakoshi <murakosi@...>
長沢@新大OB です。
[#29788] marshaled time format differ — IWATSUKI Hiroyuki <don@...>
岩月と申します。
まつもと ゆきひろです
岩月と申します。
岩月と申します。
From: IWATSUKI Hiroyuki <don@na.rim.or.jp>
岩月と申します。
岩月と申します。
At Tue, 29 May 2001 00:23:31 +0900,
岩月と申します。
At Tue, 29 May 2001 09:10:26 +0900,
[#29812] A request to RAA (was Re: YARPC 19101) — Takahiro Kambe <taca@...>
In message <20010527174810.632346.eban@os.rim.or.jp>
[#29824] Windows 版 Ruby — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#29853] "" で行われる展開を eval 無しで… — ABE Shigeru <shiger-a@...>
みなさま、はじめまして。阿部といいます。
From: ABE Shigeru <shiger-a@nifty.com>
阿部です。
From: ABE Shigeru <shiger-a@nifty.com>
こんにちは、阿部です。
[#29864] ActiveScriptRuby について質問です — たくみ <taku3@...>
原 忠司と申します。
[#29880] autoconf.rb — nobu.nakada@...
なかだです。
[#29886] mod_ruby and eruby — norio goto <goto@...>
後藤@横河工事です。
始めまして,田代と申します.
前田です。
In message <87hey3pg1w.wl@studly.priv.netlab.zetabits.co.jp>
[#29911] w3m のコンパイルエラーが起きました — "Inoue" <inoue@...>
井上です。
[#29941] Ruby ライセンスについて — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
In message <991297854.779223.23013.nullmailer@ev.netlab.zetabits.com>
At Thu, 31 May 2001 18:00:18 +0900,
有馬@横浜、忙しいはず..です。
[ruby-list:29604] Importing eachdelegator.rb
少し前に登場した、岡田さん作の EachDelegator:
http://www.ruby-lang.org/en/raa-list.rhtml?name=EachDelegator
ですが、これをどうやって標準仕様に取り入れようかという話です。
前の議論を反映して巧妙に実現されており、ぜひとも洗練した形で
標準機能として取り込みたいところです。
(添付ドキュメントより)
============================================================
- EachDelegatorとは?
EachDelegatorとは、ブロックを引数に取る既存のメソッドにEnumerable能力を
あとから追加するためのライブラリです。
rubyには、ひとつのクラスにeach_*と名前のついたメソッドがいくつかあるケー
スが見られます。Stringに対するeach_lineとeach_byteなどがその例です。
こうした複数のeach_*メソッドを持つクラスについて、eachに対してしか
Enumerableなメソッドを適用できないのはいかにも不便です。こうしたジレンマ
を解消するためにこのライブラリが生まれました。
- 簡単な使い方
eachdelegator.rbをrequireすると、each_*、または*_eachと名前のついたあら
ゆるメソッドが、自動的にEnumerableなメソッドを呼び出せるようになります。
eachdelegator.rbは本来ブロックと共に呼び出さなければいけないこれらのメソッ
ドを、ブロック無しで呼び出した場合にEachDelegatorオブジェクトを返すよう
に再定義します。
EachDelegatorは、eachメソッドを元のオブジェクトの元のメソッドに転送する
Enumerableなクラスです。このクラスのオブジェクトに対して collect、grepな
どのEnumerableモジュールの各種の操作を実行すると、それらを元のメソッドに
対して適用したのと同じ結果が得られます。
例えばString#each_byteをindex付きで呼び出し、その結果をcollect するとい
うような処理を、次のようなシンプルな形で記述できます。
p "hoge".each_byte.each_with_index.collect{|a, i| [ i, a ]}
=> [[0, 104], [1, 111], [2, 103], [3, 101]]
- 高度な使い方
自動的に再定義されるのは、each_*または*_eachという名前で定義されているメ
ソッドのみです。それ以外のメソッドについては手動で
Module#each_delegatorを使って、メソッドの再定義をしてやる必要があります。
例えば、 Arrayに隣あった要素のペアをiterateするall_pairメソッドを追加し
て、それぞれの要素の差を配列に出力したいといった場合は、次のように書きま
す。
require 'eachdelegator'
class Array
def all_pair
for i in 0...(size - 1)
yield at(i), at(i + 1)
end
self
end
each_delegator :all_pair
end
p [1, 3, 5, 7, 13].all_pair.collect{|a, b| b - a}
=> [ 2, 2, 2, 6]
============================================================
と、 Enumerable が本来備えていてもいいような素晴らしい仕様拡張
なのですが、全モジュールを検索して each_*/*_each を自動的に登録
するところと、 method_added を乗っ取って each_*/*_each が追加
されたときに自動的に登録するところが標準に入れるにはちょっと
トリッキー過ぎるきらいがあります。
そこで考えた案です。
1. 原則的に each_*/*_each のようなメソッドはモジュール(の作者)が
自分で登録することとする。ただし、未対応のモジュールを対応させる
救済用モジュールという位置付けで、自動登録機能のみを独立させた
lib/eachdelegator.rb を提供する。(名称は別途検討)
2. 一方、 each_delegator メソッドや EachDelegator クラスは標準
組み込みとし、標準添付のクラス・モジュールが持つ each_*/*_each
メソッド群はみな最初から each_delegator で登録しておくようにする。
(標準クラス・モジュールを使うだけなら require 'eachdelegator' は
不要)
さて、これで「ふつー each_*.collect 可能」となるわけですが、
標準組み込みの際に考えた方がいいと思うことを二つ。
3. each_delegator メソッドは、 class Module ではなく module
Enumerable に持たせた方がよいのではないか?階層的にその方が断然
しっくりきて標準採用しやすいと思う。困るのは each_delegator に
登録したいメソッドがあるが each がなく include Enumerable して
いない、という特異なケースだが、 その場合は each と alias して
include Enumerable するのが自然だろう。
4. 名称については、 delegate/delegator というのはちょっとものもの
しい感じがするので、より簡単に:
EachDelegator -> Enumerable::Enumerator
each_delegate -> enumerator_method
とするのはどうか?クラス名の方は、ただ each のみを提供する
Enumerable なクラスだから、 Enumerator 以上でも以下でもないという
感じ。外で使うものではないので、 Enumerable の内部クラスとするのが
適当と思われる。登録メソッド名の方は、はっきりと enumerate する
メソッドだと宣言しているように見えるのでこの方がよさそう。
どんなもんでしょうか? (早く現実に実装してみたい。:)
--
/
/__ __ 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"