[#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:21277] multiple assignment

From: Koji Arai <JCA02266@...>
Date: 2003-08-28 17:27:43 UTC
List: ruby-dev #21277
新井です。

多重代入の挙動を調べていました。2003-08-28 の変更で return 
の挙動がおかしくなった部分があるように思われます。

多重代入、ブロックパラメータ、return はそれぞれ同じ挙動を示
すものと考えていたのですが実際のところ空の return は return
nil の省略形になっているのですね。

以下の結果が望ましいものなのかどうかご確認ください。

*a = *[]; p a
def f;  yield; end; f {|*a| p a}
def r; return; end; *a = r(); p a
=> ruby 1.6.8 (2003-08-03) [i586-linux]
   []
   [nil]
   [nil]
=> ruby 1.8.0 (2003-08-04) [i586-linux]
   []
   []
   [nil]
=> ruby 1.8.0 (2003-08-28) [i586-linux]
   []
   []
   [nil]

         *a = *[]; p a
def f;  yield *[]; end; f {|*a| p a}
def r; return *[]; end; *a = r(); p a
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.6.8 (2003-08-03) [i586-linux]
   []
   []
   []
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-04) [i586-linux]
   []
   []
   [nil]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-28) [i586-linux]
   []
   []
   [nil]

         *a = *[1,2]; p a
def f;  yield *[1,2]; end; f {|*a| p a}
def r; return *[1,2]; end; *a = r(); p a
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.6.8 (2003-08-03) [i586-linux]
   [1, 2]
   [1, 2]
   [1, 2]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-04) [i586-linux]
   [1, 2]
   [1, 2]
   [1, 2]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-28) [i586-linux]
   [1, 2]
   [1, 2]
   [[1, 2]]

         *a = *[*[]]; p a
def f;  yield *[*[]]; end; f {|*a| p a}
def r; return *[*[]]; end; *a = r(); p a
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.6.8 (2003-08-03) [i586-linux]
   []
   []
   []
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-04) [i586-linux]
   []
   []
   [nil]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-28) [i586-linux]
   []
   []
   [nil]

         *a = *[*[1,2]]; p a
def f;  yield *[*[1,2]]; end; f {|*a| p a}
def r; return *[*[1,2]]; end; *a = r(); p a
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.6.8 (2003-08-03) [i586-linux]
   [1, 2]
   [1, 2]
   [1, 2]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-04) [i586-linux]
   [1, 2]
   [1, 2]
   [1, 2]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-28) [i586-linux]
   [1, 2]
   [1, 2]
   [[1, 2]]

     a,b,*c = *[[]]; p [a,b,c]
def f;  yield *[[]]; end; f {|a,b,*c| p [a,b,c]}
def r; return *[[]]; end; a,b,*c = r(); p [a,b,c]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.6.8 (2003-08-03) [i586-linux]
   [[], nil, []]
   [nil, nil, []]
   [[], nil, []]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-04) [i586-linux]
   [nil, nil, []]
   [nil, nil, []]
   [nil, nil, []]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-28) [i586-linux]
   [[], nil, []]
   [[], nil, []]
   [nil, nil, []]

--
新井康司 (Koji Arai)

In This Thread

Prev Next