[#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
原です。
[#3663] Re: Multiple assignment at yield()
— matz@... (Yukihiro Matsumoto)
1998/11/25
まつもと ゆきひろです
[#3667] Re: Multiple assignment at yield()
— Shin-ichro Hara <sinara@...>
1998/11/25
原です。
[#3722] multiple assignment, yield and return
— Shin-ichro Hara <sinara@...>
1998/12/01
原です。
[#3725] Re: multiple assignment, yield and return
— shugo@... (MAEDA Shugo)
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
前田です。
[#3790] Re: List()
— Shin-ichiro Hara <sinara@...>
1998/12/10
原です。
[#3791] Re: List()
— MAEDA Shugo <shugo@...>
1998/12/10
前田です。
[#3793] Re: List()
— Shin-ichiro Hara <sinara@...>
1998/12/12
原です。
[#3797] Re: List()
— matz@... (Yukihiro Matsumoto)
1998/12/14
まつもと ゆきひろです
[#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
まつもと ゆきひろです
[#3618] Re: problem of Delegator
— keiju@... (石塚圭樹 )
1998/11/20
けいじゅ@日本ラショナルソフトウェアです.
[#3619] Re: problem of Delegator
— matz@... (Yukihiro Matsumoto)
1998/11/20
まつもと ゆきひろです
[#3620] Re: problem of Delegator
— keiju@... (石塚圭樹 )
1998/11/20
けいじゅ@日本ラショナルソフトウェアです.
[#3647] Re: problem of Delegator
— matz@... (Yukihiro Matsumoto)
1998/11/24
まつもと ゆきひろです
[#3652] Re: problem of Delegator
— keiju@... (石塚圭樹 )
1998/11/24
けいじゅ@日本ラショナルソフトウェアです.
[#3653] Re: problem of Delegator
— matz@... (Yukihiro Matsumoto)
1998/11/24
まつもと ゆきひろです
[#3655] Re: problem of Delegator
— keiju@... (石塚圭樹 )
1998/11/24
けいじゅ@日本ラショナルソフトウェアです.
[#3621] Time object memory leak? — Masaki Fukushima <fukusima@...>
福嶋と申します。
6 messages
1998/11/21
[#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
まつもと ゆきひろです
[#3686] nested method? (Re: block local variable)
— shugo@... (MAEDA Shugo)
1998/11/26
前田です。
[#3687] Re: nested method? (Re: block local variable)
— Kazuhiro HIWADA <hiwada@...>
1998/11/26
ひわだです。
[#3689] Re: nested method? (Re: block local variable)
— shugo@... (MAEDA Shugo)
1998/11/27
前田@大阪大学です。
[#3690] Re: nested method? (Re: block local variable)
— Kazuhiro HIWADA <hiwada@...>
1998/11/27
ひわだです。
[#3692] Re: [ruby-list:11096] Re: MacRuby — Wakou Aoyama <wakou@...>
青山です。
10 messages
1998/11/27
[#3698] Re: [ruby-list:11096] Re: MacRuby
— shugo@... (MAEDA Shugo)
1998/11/29
前田です。
[#3699] Re: [ruby-list:11096] Re: MacRuby
— Wakou Aoyama <wakou@...>
1998/11/29
青山です。
[#3703] Re: [ruby-list:11096] Re: MacRuby
— Shin-ichro Hara <sinara@...>
1998/11/30
原です。
[#3707] new delegator — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
6 messages
1998/11/30
[#3709] ruby-1.1c9 install 中に SEGV — Koji Arai <JCA02266@...>
新井です。
18 messages
1998/11/30
[#3876] Re: ruby-1.1c9 install 中に SEGV
— Koji Arai <JCA02266@...>
1998/12/20
新井です。
[#3883] Re: ruby-1.1c9 install 中に SEGV
— matz@... (Yukihiro Matsumoto)
1998/12/22
まつもと ゆきひろです
[#3965] Re: ruby-1.1c9 install 中に SEGV
— Koji Arai <JCA02266@...>
1998/12/24
新井です。
[ruby-dev:3594] Re: Multiple assignment at yield()
From:
Shin-ichro Hara <sinara@...>
Date:
1998-11-18 06:22:56 UTC
List:
ruby-dev #3594
原です。
|まつもと ゆきひろです
|いやあ,多重代入と仮引数へのバインドを比較すると1つの仮引数
|は実は多重代入の
|
| a, = *a
|
|に相当するわけです.ですから
なるほどそうだったのか。引数の数のチェックがあるから、、、思い
つかなかった。
実引数から仮引数の値の引渡しは、たとえ1つでも多重代入の様に行
なわれるわけですね。
#そして、単純代入は多重代入の特別な場合であると考えてはいけない
#というのも重要なポイントだ。
|で,考えられる対応は
|
| * yieldに*がついた引数が渡され,その要素が1つだった時を特
| 別扱いし,その要素だけを渡す
|
| * ブロックのパラメータに対する挙動を変更し(あるいは多重代
| 入の挙動も含めて変更し),xは先頭の要素を(つまり「x,」と
| 等価),*xは配列として代入するようにする
|
|というものが考えられます.他にもあるかも.
|で,後者は大げさになるので避けたいですねえ.
ふーむ。考えられるのはですね、今は
*a = [0] #=> a == [0]
です。それなりに納得できますが、a == [[0]] にする手もあるわけで
すよね。
x, *a = 1, [0] #=> a == [[0]]
というのを考えると。一応、私の意見としては、
*a = [0] #=> a == [[0]]
yield(*[0]) #=> yield(0)
で一票かな。難しいなあ。
そもそも事の発端を解説しますと、enumerable なオブジェクトの
wrapper クラスを作ろうとしたんです。
class Foo
def initialize(e); @body = e; end
def each0(&block); @body.each(&block); end
def each1(&block); @body.each { |*x| block.call(*x) } end
def each2(&block); @body.each { |x| block.call(*x) } end
def each3; @body.each { |*x| yield(*x) } end
def each4; @body.each { |x| yield(*x) } end
end
Foo.new([1]).each0 { |x| p x } #=> 1
Foo.new([1]).each1 { |x| p x } #=> 1
Foo.new([1]).each2 { |x| p x } #=> 1
Foo.new([1]).each3 { |x| p x } #=> [1]
Foo.new([1]).each4 { |x| p x } #=> 1
Foo.new([[2]]).each0 { |x| p x } #=> [2]
Foo.new([[2]]).each1 { |x| p x } #=> 2
Foo.new([[2]]).each2 { |x| p x } #=> 2
Foo.new([[2]]).each3 { |x| p x } #=> [2]
Foo.new([[2]]).each4 { |x| p x } #=> [2]
これらの実行結果について即答できる人は多くはないと思うけど(^^;、
まあ、ruby1.1 で最適な each の定義は上の each0 ですが、一見正し
そうに見える each3 がうまく動かないのが不満だったわけです。
(意外に each4 がちゃんと動くのだった。)
何にしても、受けとったものをそのまま他に回す事ができれば満足なん
ですが、、、どうしたらいいかなあ。
|| x = 25 #=> x == 25
|| x = 25, 26 #=> x == [25, 26]
|| x = *[25, 26] #=> x == [25, 26]
||
||たいしてうれしくないかもしれないですが、ブロックパラメータの値
||の受け渡しと consistent になって、八方丸く収まるというわけ。
|
|いや,文法が悲鳴を上げると言うデメリットがあります.^^;;;
まつもとさんの悲鳴はともかく文法の悲鳴は聞きたくないです。:-)