[#3587] Multiple assignment at yield() — Shin-ichro Hara <sinara@...>

原です。

86 messages 1998/11/17
[#3588] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/17

まつもと ゆきひろです

[#3589] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/17

原です。

[#3590] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/17

まつもと ゆきひろです

[#3594] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/18

原です。

[#3595] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/18

まつもと ゆきひろです

[#3596] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/18

原です。

[#3598] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/19

まつもと ゆきひろです

[#3600] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/20

原です。

[#3610] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/20

原です。

[#3611] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/20

まつもと ゆきひろです

[#3622] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/21

原です。

[#3630] Re: Multiple assignment at yield() — shugo@... (MAEDA Shugo) 1998/11/22

前田です。

[#3635] Re: Multiple assignment at yield() — Shin-ichiro Hara <sinara@...> 1998/11/23

原です。

[#3658] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/24

まつもと ゆきひろです

[#3660] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/24

原です。

[#3722] multiple assignment, yield and return — Shin-ichro Hara <sinara@...> 1998/12/01

原です。

[#3724] Re: multiple assignment, yield and return — Shin-ichro Hara <sinara@...> 1998/12/01

原です。

[#3742] List() — Shin-ichro Hara <sinara@...> 1998/12/04

原です。

[#3743] Re: List() — shugo@... (MAEDA Shugo) 1998/12/06

前田です。

[#3744] Re: List() — Shin-ichiro Hara <sinara@...> 1998/12/06

原です。

[#3755] Re: List() — shugo@... (MAEDA Shugo) 1998/12/07

前田です。

[#3758] Re: List() — Shin-ichro Hara <sinara@...> 1998/12/07

原です。

[#3760] Re: List() — shugo@... (MAEDA Shugo) 1998/12/07

前田です。

[#3761] Re: List() — Shin-ichiro Hara <sinara@...> 1998/12/07

原です。

[#3774] Re: List() — shugo@... (MAEDA Shugo) 1998/12/08

前田です。

[#3780] Re: List() — Shin-ichiro Hara <sinara@...> 1998/12/08

原です。

[#3784] Re: List() — shugo@... (MAEDA Shugo) 1998/12/09

前田です。

[#3788] Re: List() — Shin-ichro Hara <sinara@...> 1998/12/09

原です。

[#3789] Re: List() — MAEDA Shugo <shugo@...> 1998/12/10

前田です。

[#3602] problem of Delegator — keiju@... (Keiju ISHITSUKA)

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

17 messages 1998/11/20
[#3605] Re: problem of Delegator — matz@... (Yukihiro Matsumoto) 1998/11/20

まつもと ゆきひろです

[#3606] Re: problem of Delegator — keiju@... (石塚圭樹 ) 1998/11/20

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

[#3607] Re: problem of Delegator — matz@... (Yukihiro Matsumoto) 1998/11/20

まつもと ゆきひろです

[#3612] Re: problem of Delegator — keiju@... (石塚圭樹 ) 1998/11/20

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

[#3613] Re: problem of Delegator — matz@... (Yukihiro Matsumoto) 1998/11/20

まつもと ゆきひろです

[#3626] block local variable (Re: スコープの範囲) — shugo@... (MAEDA Shugo)

前田です。

47 messages 1998/11/22
[#3628] Re: block local variable (Re: スコープの範囲) — Koji Arai <JCA02266@...> 1998/11/22

新井です。

[#3629] Re: block local variable (Re: スコープの範囲) — shugo@... (MAEDA Shugo) 1998/11/22

前田です。

[#3632] Re: block local variable (Re: スコープの範囲) — Koji Arai <JCA02266@...> 1998/11/22

新井です。

[#3633] Re: block local variable (Re: スコープの範囲) — shugo@... (MAEDA Shugo) 1998/11/22

前田です。

[#3636] Re: block local variable (Re: スコープの範囲) — Shin-ichiro Hara <sinara@...> 1998/11/23

原です。

[#3642] Re: block local variable (Re: スコープの範囲) — Koji Arai <JCA02266@...> 1998/11/23

新井です。

[#3645] Re: block local variable(Re: スコープの範囲) — Shin-ichiro Hara <sinara@...> 1998/11/23

原です。

[#3674] Re: block local variable(Re: スコープの範囲) — Koji Arai <JCA02266@...> 1998/11/25

新井です。

[#3678] Re: block local variable(Re: スコープの範囲) — matz@... (Yukihiro Matsumoto) 1998/11/26

まつもと ゆきひろです

[#3681] Re: block local variable(Re: スコープの範囲) — Kazuhiro HIWADA <hiwada@...> 1998/11/26

ひわだです。

[#3682] Re: block local variable(Re: スコープの範囲) — Shin-ichro Hara <sinara@...> 1998/11/26

原です。

[#3683] Re: block local variable(Re: スコープの範囲) — matz@... (Yukihiro Matsumoto) 1998/11/26

まつもと ゆきひろです

[#3684] Re: block local variable(Re: スコープの範囲) — Shin-ichro Hara <sinara@...> 1998/11/26

原です。

[#3685] Re: block local variable(Re: スコープの範囲) — matz@... (Yukihiro Matsumoto) 1998/11/26

まつもと ゆきひろです

[#3709] ruby-1.1c9 install 中に SEGV — Koji Arai <JCA02266@...>

新井です。

18 messages 1998/11/30

[ruby-dev:3622] Re: Multiple assignment at yield()

From: Shin-ichro Hara <sinara@...>
Date: 1998-11-21 14:39:44 UTC
List: ruby-dev #3622
原です。

*a = Y を強制的に a = [Y] としてしまうかどうかという話です。

In message "[ruby-dev:3611] Re: Multiple assignment at yield()"
    on 98/11/20, Yukihiro Matsumoto <matz@netlab.co.jp> writes:
|
|まつもと ゆきひろです

|気になるのは以下の点です.
|
|  * ややモデルが複雑化しているが,それを正当化するメリットが
|    あるか(「*a = [2]」のメリットは理解できますが)

で、その、どのぐらいメリットがあるのかというと、こういうこと
です。

メソッドのパラメータは *x で受けることによって完全に自分が何
を受けたかを特定できます。(たとえば、パラメータの数によって
異なる動作をするメソッドが書けます。)

  def foo(*x); p x; end

  foo(1)      #=> [1]
  foo([1])    #=> [[1]]
  foo(1, 2)   #=> [1, 2]
  foo([1, 2]) #=> [[1, 2]]

ところが、現在の多重代入由来のブロックパラメータへの代入では
これはできません。

例:

  def y1; yield(1); end
  def y2; yield([1]); end
  def y3; yield(1, 2); end
  def y4; yield([1,2]); end

  def foo1; y1{ |x| p x }; end
  def foo2; y2{ |x| p x }; end
  def foo3; y3{ |x| p x }; end
  def foo4; y4{ |x| p x }; end

  def bar1; y1{ |*x| p x }; end
  def bar2; y2{ |*x| p x }; end
  def bar3; y3{ |*x| p x }; end
  def bar4; y4{ |*x| p x }; end

  foo1 #=> 1
  foo2 #=> [1]
  foo3 #=> [1, 2]
  foo4 #=> [1, 2]

  bar1 #=> [1]
  bar2 #=> [1]
  bar3 #=> [1, 2]
  bar4 #=> [1, 2]

つまり、|x| で受けても |*x| で受けても yield の引数が何だっ
たか区別できないものあるわけです。そこで、多重代入の考え方
を少し変えて、

  *x = Y #=> x = [Y]

とする事により、

  bar1 #=> [1]
  bar2 #=> [[1]]
  bar3 #=> [1, 2]
  bar4 #=> [[1, 2]]

と、*x で受けた場合はメソッドと同じように受けることにしてし
まえ、というのが私の提案です。

実際にイテレータに不定個のパラメータを渡す事はめったにないこ
とでですが、相手に確実に情報を渡す方法がある安心感は大事では
ないでしょうか。たぶんこの様にしても以前のスクリプトで誤動作
するものはほとんどないのではないか、とふんでいるのですが。

In This Thread