[#21225] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2003/08/22
[#21227] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — nobu.nakada@... 2003/08/22

なかだです。

[#21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — matz@... (Yukihiro Matsumoto) 2003/08/22

まつもと ゆきひろです

[#21281] 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

16 messages 2003/08/29
[#21285] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/08/29

まつもと ゆきひろです

[#21288] Re: 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...> 2003/08/29

永井@知能.九工大です.

[#21306] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/09/03

まつもと ゆきひろです

[ruby-dev:21251] Re: [ruby-cvs] ruby: * enum.c (inject_i):userb_yield_values.

From: matz@... (Yukihiro Matsumoto)
Date: 2003-08-23 14:17:37 UTC
List: ruby-dev #21251
まつもと ゆきひろです

In message "[ruby-dev:21238] Re: [ruby-cvs] ruby: * enum.c (inject_i):userb_yield_values."
    on 03/08/23, Koji Arai <JCA02266@nifty.ne.jp> writes:

|今まで
|
|    x = ["a"]
|    p x
|    => ["a"]
|
|だったのを
|
|    x = *[["a"]]
|    p x
|    => ["a"]
|
|にするということです。今だソースみてないので話半分に。。

新井さんのおっしゃることを十分に理解してないのですが。

簡単に言うとscanがブロックに何を渡すべきかです。
私の意見は

  * 1個の配列([$1,$2..])
  * マッチした括弧の数だけの値(*[$1,$2..])

のいずれかが望ましいのではないか、です。1.8では上記の二つは
違う意味を持っています。

今、CVSでは後者になっています。違いは、
前者が 

  |v|で部分文字列の配列を受け取る
  |v1,v2|で部分文字列を変数に代入
  |*v|で部分文字列が一つの時[[$1]]を受け取る

のに対して、後者は

  |v|で部分文字列を受け取る(要素が二つ以上なら配列)
  |v1,v2|で部分文字列を変数に代入
  |*v|で部分文字列の配列を受け取る

です。「|v|をどう捉えるか」によって変わってきますね。

前者のデメリットは|*v|で訳のわからない配列[[$1]]を受け取るこ
とがあることで、後者のデメリットはa)互換性と、b)|v|で受けた
時、要素の数によって受け取るオブジェクトが違うことです。

もっとも、受け取る部分文字列の数はあらかじめ分かることがほと
んどでしょうから、b)は問題にならないでしょう。気になるのであ
れば|*v|で受ければ配列で得られるのですから。

                                まつもと ゆきひろ /:|)

In This Thread