[#3747] constants (or class vriable?) — Wakou Aoyama <wakou@...>
青山です。
原です。
青山です。
まつもと ゆきひろです
In message <199812080034.JAA05946@picachu.netlab.co.jp>
立石です。
まつもと ゆきひろです
[#3773] pack("M")/unpack("M") — shugo@... (MAEDA Shugo)
前田です。
[#3794] port NetBSD/ alpha 1.3I — SHIROYAMA Takayuki <psi@...>
[#3826] ruby 1.1d0 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
渡辺哲也です。
ふなばです。
笠原です。
前田です。
[#3851] tkutil patch (for 1.1d0) — ttate@...
立石です。
[#3859] missing/setenv.c in 1.1d0 — Inaba Hiroto <inaba@...>
稲葉です。こんなにパッチがあると、みのがされてしまうかも。
[#3862] 1.1d0 new here document — Wakou Aoyama <wakou@...>
青山です。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
[#3873] (?: ) does not work? — shugo@... (MAEDA Shugo)
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
白山@Stellarです。
[#3881] I want to catch all jump — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
[#3894] ruby 1.1d1 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
わたなべです.
[#3899] interpreter reinitialization — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
[#3962] ruby 1.3(!) released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#3966] [BUG] exception in safe level 4 — shugo@... (Shugo Maeda)
前田です。
[#3997] [BUG] "#{}" while 1 — gotoken@... (GOTO Kentaro)
ごとけんです
まつもと ゆきひろです
[#4002] config.guess — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
笠原です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
[#4005] [BUG] ruby 1.3(98/12/24) [i686-linux] at rb_gc_mark() — Ryo HAYASAKA <hayasaka@...>
早坂@会津大学といいます。
In message "[ruby-dev:4005] [BUG] ruby 1.3(98/12/24) [i686-linux] at rb_gc_mark()"
早坂@会津大学です。
[#4015] Integer proper methods — gotoken@... (GOTO Kentaro)
ごとけんです
[#4030] module Precision — gotoken@... (GOTO Kentaro)
ごとけんです
ごとけんです
まつもと ゆきひろです
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
ごとけんです
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
ごとけんです
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
最近あんまり建設的でないわたし.
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
原です。
[#4032] [Req] make-symbol? — shugo@... (Shugo Maeda)
前田です。
[ruby-dev:3758] Re: List()
原です。
In message "[ruby-dev:3755] Re: List()"
on 98/12/07, MAEDA Shugo <shugo@aianet.ne.jp> writes:
|前田です。
|eachが、
|
|{"key"=>"val"}.each { |key, val|
| p key #=> ["key", "val"]
| p val #=> nil
|}
|
|のような挙動の時は、
もしかすると原(はら)案を誤解されているかも。each が
yield("key", "val") で定義されいても yield(["key", "val"])
で定義されていてもこの場合はあり得ません。どちらの場合も
{"key"=>"val"}.each { |key, val|
p key #=> "key"
p val #=> "val"
}
となります。しかし each_with_index は変わるわけ。
|原> それはそうなんですけれど、ポイントは each がそのままで、
|原> each_with_index, each_with_index2 と2つ作るのではなく、
|原> each_with_index はそのままで、クラスの側で2種類の動作に
|原> 対応したそれぞれの each の定義の仕方が存在するか、という
|原> 事なんです。
|
|each単体で使った時の挙動がそのままで、each_with_indexの動作だけ
|変わる、というのが気持ち悪い気がしたんです。
その気持ち悪さは分かっています。でもそれは |x| で受けた場合です
よね。|*x| で受けると違うというのがみそなんです。
|eachの変更によって(each自体の意味は変えずに)each_with_indexの挙動を
|変えるためには、配列とリストがある場合には区別されて、ある場合には
|区別されない、ということを利用しなければいけないわけで、ちょっと
|トリッキーな気がします。
それはブロックパラメータは |x| が基本だと考えるからです。私の案は
完全にパラメータの情報を得るには |*x| で受けるべし
というのを基本にする、というものです。|x|, |x, y| というのは基本的
な受け方でないと考えるわけです。なぜなら、 yield(1, 2) は、 x = 1, 2
が文法エラーであるにもかかわらず。|x| で受けて [1, 2] を生成します。
yield([1, 2]) は、オブジェクト1個を渡しているにもかかわらず、|x, y|
で受けて x=1, y=2 を生成します。つまりこちらがトリッキーな Ruby magic
だと思うのです。
従って each_with_index の様な「透過的」であるべきメソッドを書く時に
は必ず |*x| で受けて処理するのが基本的な作法となると思います。
例えば、原案での each_with_index の定義は
def each_with_index
i = 0
each { |*x|
yield(*(x + i))
i += 1
}
end
です。
「* で受けて * で送り出す」という形をしているのがきれいだと思うので
すが。