[#3747] constants (or class vriable?) — Wakou Aoyama <wakou@...>

青山です。

20 messages 1998/12/06
[#3751] Re: constants (or class vriable?) — Shin-ichro Hara <sinara@...> 1998/12/07

原です。

[#3763] Re: constants (or class vriable?) — Wakou Aoyama <wakou@...> 1998/12/07

青山です。

[#3764] Re: constants (or class vriable?) — matz@... (Yukihiro Matsumoto) 1998/12/08

まつもと ゆきひろです

[#3767] Re: constants (or class vriable?) — kjana@... (YANAGAWA Kazuhisa) 1998/12/08

In message <199812080034.JAA05946@picachu.netlab.co.jp>

[#3826] ruby 1.1d0 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

35 messages 1998/12/16

[#3873] (?: ) does not work? — shugo@... (MAEDA Shugo)

前田です。

15 messages 1998/12/19

[#3881] I want to catch all jump — shugo@... (Shugo Maeda)

前田です。

17 messages 1998/12/21
[#3895] Re: I want to catch all jump — matz@... (Yukihiro Matsumoto) 1998/12/22

まつもと ゆきひろです

[#3894] ruby 1.1d1 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

25 messages 1998/12/22

[#3899] interpreter reinitialization — shugo@... (Shugo Maeda)

前田です。

22 messages 1998/12/22
[#3923] Re: interpreter reinitialization — matz@... (Yukihiro Matsumoto) 1998/12/23

まつもと ゆきひろです

[#3926] Re: interpreter reinitialization — shugo@... (Shugo Maeda) 1998/12/23

前田です。

[#3931] Re: interpreter reinitialization — matz@... (Yukihiro Matsumoto) 1998/12/24

まつもと ゆきひろです

[#3956] Re: interpreter reinitialization — shugo@... (Shugo Maeda) 1998/12/24

前田です。

[#3960] Re: interpreter reinitialization — matz@... (Yukihiro Matsumoto) 1998/12/24

まつもと ゆきひろです

[#4002] config.guess — Koji Arai <JCA02266@...>

新井です。

24 messages 1998/12/26
[#4039] Re: config.guess — matz@... (Yukihiro Matsumoto) 1998/12/29

まつもと ゆきひろです

[#4045] Re: config.guess — Koji Arai <JCA02266@...> 1998/12/31

新井です。

[#4047] Re: config.guess — matz@... (Yukihiro Matsumoto) 1999/01/01

まつもと ゆきひろです

[#4048] Re: config.guess — Koji Arai <JCA02266@...> 1999/01/01

新井です。

[#4049] Re: config.guess — matz@... (Yukihiro Matsumoto) 1999/01/02

まつもと ゆきひろです

[#4050] Re: config.guess — Motoyuki Kasahara <m-kasahr@...> 1999/01/04

笠原です。

[#4030] module Precision — gotoken@... (GOTO Kentaro)

ごとけんです

78 messages 1998/12/28
[#4310] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/01/21

ごとけんです

[#4311] Re: module Precision — matz@... (Yukihiro Matsumoto) 1999/01/21

まつもと ゆきひろです

[#4312] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/01/21

ごとけんです

[#4317] Re: module Precision — keiju@... (石塚圭樹 ) 1999/01/21

けいじゅ@日本ラショナルソフトウェアです.

[#4364] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/01/25

ごとけんです

[#4478] Re: module Precision — matz@... (Yukihiro Matsumoto) 1999/01/28

まつもと ゆきひろです

[#4506] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/01/30

ごとけんです

[#4552] Re: module Precision — matz@... (Yukihiro Matsumoto) 1999/02/01

まつもと ゆきひろです

[#4557] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/01

ごとけんです

[#4632] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/03

ごとけんです

[#4647] Re: module Precision — keiju@... (石塚圭樹 ) 1999/02/03

けいじゅ@日本ラショナルソフトウェアです.

[#4648] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/03

ごとけんです

[#4633] Re: module Precision — matz@... (Yukihiro Matsumoto) 1999/02/03

まつもと ゆきひろです

[#4636] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/03

ごとけんです

[#4836] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/08

ごとけんです

[#4843] Re: module Precision — keiju@... (石塚圭樹 ) 1999/02/08

けいじゅ@日本ラショナルソフトウェアです.

[#4849] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/08

ごとけんです

[#4924] Re: module Precision — keiju@... (石塚圭樹 ) 1999/02/09

けいじゅ@日本ラショナルソフトウェアです.

[#4976] a genericity — gotoken@... (GOTO Kentaro) 1999/02/10

ごとけんです

[#5008] Re: a genericity — keiju@... (石塚圭樹 ) 1999/02/11

けいじゅ@日本ラショナルソフトウェアです.

[#5018] Re: a genericity — gotoken@... (GOTO Kentaro) 1999/02/11

ごとけんです

[#5171] Re: a genericity — keiju@... (石塚圭樹 ) 1999/02/16

けいじゅ@日本ラショナルソフトウェアです.

[ruby-dev:3758] Re: List()

From: Shin-ichro Hara <sinara@...>
Date: 1998-12-07 14:24:41 UTC
List: ruby-dev #3758
原です。

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

です。

「* で受けて * で送り出す」という形をしているのがきれいだと思うので
すが。

In This Thread