[#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:21214] Re: scanf and block parameter

From: matz@... (Yukihiro Matsumoto)
Date: 2003-08-20 17:35:06 UTC
List: ruby-dev #21214
まつもと ゆきひろです

In message "[ruby-dev:21207] scanf and block parameter"
    on 03/08/17, Koji Arai <JCA02266@nifty.ne.jp> writes:

|scanf.rb を試していたのですが
|
|    require 'scanf'
|    p "a b c".scanf("%s %s") {|*v| v}
|
|    ruby 1.8.0 (2003-08-10) [i586-linux]
|    [["a", "b"], [["c"]]]
|
|のように最後の要素が配列の配列になってしまいます。これは
|
|    def foo
|      yield([:foo])
|    end
|
|    foo {|*v| p v}
|
|    ruby 1.8.0 (2003-08-10) [i586-linux]
|    [[:foo]]
|
|となってしまうためです。どのようにするのが望ましいでしょう?

むむむ。

|(1) 利用者は一引数の配列で受けるべき
|(2) scanf が配列展開してパラメータを渡すべき

"%s %s"を指定したということは複数の値を期待していると思うん
です。それに対して一引数で受けると言うのも変な話ではないかと。
というわけで、この場合 |a,b| か |*v| で受け取るべきなんじゃ
ないかなあと思います。

でも、後者の対応だと |v| のケースで [["a", "b"], "c"]になっ
ちゃいますね。私の観点からは自然だけど、互換性が問題になるか
なあ。

|   都合の良いことに配列展開の場合は一引数でも警告が出ないですね。

なんででしょう? 確かに都合が良いんですが。

|おまけ、scanf は警告がうるさいようです。

これも含めてdblackに連絡しておきます。

In This Thread