[#13083] [PATCH] ruby 1.7 compile error on mswin32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#13087] importing forwardable — "Akinori MUSHA" <knu@...>
石塚さんの forwardable.rb を標準添付ライブラリにするべく、
まつもと ゆきひろです
At Thu, 3 May 2001 15:03:48 +0900,
At Thu, 3 May 2001 17:46:21 +0900,
けいじゅ@日本ラショナルソフトウェアです.
At Fri, 4 May 2001 04:07:37 +0900,
けいじゅ@日本ラショナルソフトウェアです.
[#13114] defined? $& — Koji Arai <JCA02266@...>
新井です。
[#13116] instance_eval のバグ — Masato KIYAMA <masato@...>
木山です.
なかだです。
前田です。
前田です。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#13152] rb_yield_0 should preserve and restore ruby_cref — "K.Kosako" <kosako@...>
eval()に対する修正[ruby-list:29556]は、
[#13169] SizedQueue#pop causes deadlock — "Okada Jun" <yun@...>
岡田です。
At Sun, 13 May 2001 14:11:18 +0900,
まつもと ゆきひろです
At Mon, 14 May 2001 00:24:45 +0900,
まつもと ゆきひろです
At Mon, 14 May 2001 08:59:23 +0900,
まつもと ゆきひろです
At Tue, 15 May 2001 03:31:54 +0900,
まつもと ゆきひろです
わたなべです。
さきほど、 HEAD への ruby-sha1 のインポートを完了しました。 :)
こんにちは、なかむら(う)です。
[#13195] スレッドで ctrl-c が効かなくなる ? — akira yamada / やまだあきら <akira@...>
まつもと ゆきひろです
新井です。
新井です。
[#13202] Re: [ruby-list:29672] Re: Enumerator — "Akinori MUSHA" <knu@...>
ruby-dev に移ります。
間違えて ruby-list に送ってしまったので、 ruby-dev に出し
まつもと ゆきひろです
At Wed, 16 May 2001 01:01:31 +0900,
Akinori MUSHAさんの<86ae4envtc.wl@archon.local.idaemons.org>から
At Wed, 16 May 2001 13:48:20 +0900,
[#13259] Enumerator -- Round 2 — "Akinori MUSHA" <knu@...>
もう一度、 Enumerable/Enumerator についてみなさんのご意見を
まつもと ゆきひろです
At Mon, 21 May 2001 06:04:32 +0900,
原です。
At Mon, 21 May 2001 15:00:11 +0900,
原です。
At Tue, 22 May 2001 19:02:10 +0900,
原です。
At Tue, 22 May 2001 20:57:02 +0900,
原です。
At Thu, 24 May 2001 15:44:14 +0900,
ごとうゆうぞうです。
[#13266] ruby-1.7 irb — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#13277] ext/dbm in ruby 1.7 — Kazuhiro NISHIYAMA <zn@...>
ruby 1.7のext/dbmですが、
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
[#13292] Integer("X") rescue -1 が parse error — YASUI Kentarow <kenyasui@...>
安井です。
まつもと ゆきひろです
At Wed, 23 May 2001 08:59:50 +0900,
At Thu, 24 May 2001 14:15:04 +0900,
まつもと ゆきひろです
[#13299] Proc#call weirdness ? — "Akinori MUSHA" <knu@...>
Proc#call は引数を配列化して渡しているようですが、これを
まつもと ゆきひろです
At Thu, 24 May 2001 14:25:22 +0900,
原です。
まつもと ゆきひろです
[#13336] lib/README — Kazuhiro NISHIYAMA <zn@...>
ruby_1_6のlib/READMEにcgi.rb,forwardable.rb,irb.rbの説明が
[#13357] glob & fnmatch — "Akinori MUSHA" <knu@...>
以下の機能追加をするのはいかがでしょうか。
[#13366] StringBuffer — Shugo Maeda <shugo@...>
前田です。
[#13370] clearerr(3) — Satoru Takabayashi <satoru@...>
高林と申します
Satoru Takabayashi <satoru@namazu.org> wrote:
[#13391] TCL_PACKAGE_PATH — WATANABE Hirofumi <eban@...>
わたなべです.
[#13415] ruby-gtk-0.24,0.25 が CPU を使い切る — a-shigi@...
ども鴫原です。
<20010531002634.371239@localhost>の記事において
[#13428] mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
[ruby-dev:13259] Enumerator -- Round 2
もう一度、 Enumerable/Enumerator についてみなさんのご意見を
参考に考え直しました。
- each 以外のメソッド、つまり each_byte 等も enumerate したい
というのが第一の目的。
- Enumerable でないオブジェクトでも、クラスメソッド等に対して
enumerate したいことがあり、なんとか簡便な手段を提供したい。
- やはり、 each_byte 等を enumerate するときメソッドチェーン
できないと不便。
- 新設する Enumerator の役割としては、 Enumerable でないものを
メソッド名(と与える引数)を指定して Enumerable 化するという
単機能に絞る。
- インデックスを付けたり、複数個ずつ取り出すようにする機能は
Enumerable に持たせる。すでに each_with_index もあるので、
その役割を担うのは自然。
- Enumerable に追加するということで、グループ化イテレータの生成
メソッドの名前は in_groups_of にする。group や group_by では
ぶつかる危険があるため。
- 一度は Enumerable#enum_with は邪道と思ったが、ニーズを考慮
すると、 Enumerable なものはやはり優先的に救済されて然るべき。
Enumerable でないものは、直接 Enumerator[...] を使えばよい。
- couple / pair は見送り。
ということで、以下の新設を再提案します。
----
module Enumerable
Enumerable#enum_with(method, *args)
each の代わりに method という名前のメソッドを使って
繰り返す Enumerator オブジェクトを生成して返す。
e.g.)
s = 'abcdef'
a = s.enum_with(:each_byte).collect { |b| "%%%02x" % b }
#=> ["%61", "%62", "%63", "%64", "%65", "%66"]
Enumerable#with_index()
各要素に 0 から始まるインデックスを付けて繰り返す
Enumerator オブジェクトを生成して返す。
(cf. each_with_index)
e.g.)
s = 'abcdef'
a = s.enum_with(:each_byte).with_index.collect {
|b,i| "#{i}: #{b}"
}
#=> ["0: 97", "1: 98", "2: 99", "3: 100", "4: 101", "5: 102"]
Enumerable#in_groups_of(n)
要素を n 個ずつ取り出し、各配列について繰り返す Enumerator
オブジェクトを生成して返す。 (cf. each_group_of)
e.g.)
x = [0,100,50,50,100,0]
a = x.in_groups_of(2).collect { |x,y| "(#{x},#{y})" }
#=> ["(0,100)", "(25,75)", "(50,50)", "(75,25)", "(100,0)"]
Enumerable#each_group_of(n) { |ary| ... }
要素を n 個ずつ取り出し、各配列についてブロックを繰り返す。
class Enumerator
include Enumerable
Enumerator[obj, method = :each, *args]
Enumerator::new(obj, method = :each, *args)
obj オブジェクトについて、 each の代わりに method という
名前のメソッドを使って繰り返すオブジェクトを生成して返す。
args を指定すると、 method の呼び出し時に渡される。
e.g.)
a = Enumerator[ObjectSpace, :each_object, Module].sort {
|a,b| a.name <=> b.name
}
#=> [ArgumentError, Array, ..., ZeroDivisionError, fatal]
Enumerator#each()
生成時のパラメータに従って繰り返す。
----
Ruby による実装を以下に置きました。末尾にも添付します。
http://www.idaemons.org/~knu/ruby/enumerator.rb
メソッド名については、後日 RCR して ruby-talk でも英語として
適当かどうか意見を募るつもりです。
それでは、御評価のほどよろしくお願いします。
--
/
/__ __ 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"
module Enumerable
def enum_with(method, *args)
Enumerator::new(self, method, *args)
end
def with_index()
enum_with(:each_with_index)
end
def in_groups_of(n)
enum_with(:each_group_of, n)
end
def each_group_of(n)
buf = []
each { |i|
buf << i
if buf.size == n
yield(buf)
buf.clear
end
}
unless buf.empty?
yield(buf)
end
end
end
class Enumerator
include Enumerable
class << self
alias [] new
end
def initialize(enumobj, method, *args)
@enumobj = enumobj
@method = method
@args = args
end
def each(&block)
@enumobj.send(@method, *@args, &block)
end
end
if __FILE__ == $0
a = Enumerator[ObjectSpace, :each_object, Module].sort { |a,b| a.name <=> b.name }
puts a.join(' ')
puts '----'
s = 'abcdef'
a = s.enum_with(:each_byte).with_index.collect { |b,i| "#{i}: #{b}" }
puts a
puts '----'
x = [0,100,25,75,50,50,75,25,100,0]
a = x.in_groups_of(2).collect { |x,y| "(#{x},#{y})" }
puts a
end