[#37492] ReFe 0.6 — Minero Aoki <aamine@...>

あおきです。

27 messages 2003/04/01
[#37525] ReFe 0.7 (Re: ReFe 0.6) — Minero Aoki <aamine@...> 2003/04/06

あおきです。

[#37528] Re: ReFe 0.7 (Re: ReFe 0.6) — Koji Arai <JCA02266@...> 2003/04/07

新井です。

[#37545] Re: ReFe 0.7 (Re: ReFe 0.6) — Kazuhiro NISHIYAMA <zn@...> 2003/04/10

西山和広です。

[#37546] Re: ReFe 0.7 (Re: ReFe 0.6) — Koji Arai <JCA02266@...> 2003/04/10

新井です。

[#37551] Re: ReFe 0.7 (Re: ReFe 0.6) — Kazuhiro NISHIYAMA <zn@...> 2003/04/11

西山和広です。

[#37554] refe.el (Re: ReFe 0.7 (Re: ReFe 0.6)) — Koji Arai <JCA02266@...> 2003/04/12

新井です。

[#37619] net/pop.rbにUIDLコマンドでMessage-Idのリストを取得するメソッド — Keisuke Minami <keisuke@...>

こんにちは。三並です。

18 messages 2003/04/26

[#37622] net/imapのTHREAD Extension 対応 — wanowa.kimura@... (kimura wataru)

 木村といいます。

31 messages 2003/04/27
[#37628] Re: net/imapのTHREAD Extension 対応 — Shugo Maeda <shugo@...> 2003/04/28

前田です。

[#37632] Re: net/imap のTHREAD Extension 対応 — wanowa.kimura@... (kimura wataru) 2003/04/28

 木村といいます。

[#37635] Re: net/imap のTHREAD Extension 対応 — Shugo Maeda <shugo@...> 2003/04/30

前田です。

[#37638] Re: net/imap のTHREAD Extension 対応 — wanowa.kimura@... (kimura wataru) 2003/05/01

 木村です。

[#37641] Re: net/imap のTHREAD Extension 対応 — Shugo Maeda <shugo@...> 2003/05/02

前田です。

[#37647] Re: net/imap のTHREAD Extension 対応 — wanowa.kimura@... (kimura wataru) 2003/05/06

 木村です。

[#37648] マッチした部分を配列にしまう方法 — Hirano Satoshi <hirano@...> 2003/05/07

こんにちは。

[ruby-list:37613] Re: 1.8.0 to_ary

From: Koji Arai <JCA02266@...>
Date: 2003-04-23 18:16:07 UTC
List: ruby-list #37613
新井です。

In message "[ruby-list:37612] Re: 1.8.0 to_ary"
  on 23 Apr 2003 07:40:06 +0900,
  matz@ruby-lang.org (Yukihiro Matsumoto) wrote:
> まつもと ゆきひろです
> 
> In message "[ruby-list:37611] Re: 1.8.0 to_ary"
>     on 03/04/23, Koji Arai <JCA02266@nifty.ne.jp> writes:
> 
> |* で、to_a を持つオブジェクトはそれが呼ばれるように変わった
> |んですかね?よくわかってないのですが、
> |
> |あっだから、Object#to_a がなくなる?
> 
> そうです。今は Object#to_a があるんで変なことしてますが、な
> くなってしまえば単純な実装になると思います(eval.c 2663行目)。
> 

マニュアルに反映させようと思ったのですが、少し整理させてください。

`*' による配列展開は、多重代入の右辺とメソッド呼び出しの引数
の二種類ありますが、* の対象が配列でないとき・・・

  o 多重代入の右辺においては、to_ary だけでなく、to_a も配列展開の
    ための配列化に利用されるようになった(ただし、Object#to_a は対象外)。

        class Foo
          def to_a
            [1,2,3]
          end
        end
        a,b,c = *Foo.new
        p [a,b,c]

	=> ruby 1.6.8 (2002-12-24) [i586-linux]
	   [#<Foo:0x401a0720>, nil, nil]
	=> ruby 1.8.0 (2003-04-11) [i586-linux]
	   [1, 2, 3]

  o メソッドの引数においては、to_a は利用されなくなり、
    to_ary だけが利用されるようになった。

        class Bar
          def to_a
            [1,2,3]
          end
        end
        p(*Bar.new)

	=> ruby 1.6.8 (2002-12-24) [i586-linux]
	   1
	   2
	   3
	=> ruby 1.8.0 (2003-04-11) [i586-linux]
	   #<Bar:0x4019f1f4>

ということでよろしいでしょうか?

また、以下(メソッドの引数がちょっと変わる)が、違う挙動なのは
なんでしょう?

        class Bar
          def to_a
            [1,2,3]
          end
        end
        p(1,*Bar.new)
	=> -:6: failed to convert Bar into Array (TypeError)
	   ruby 1.6.8 (2002-12-24) [i586-linux]
	=> -:6: cannot convert Bar into Array (TypeError)
	   ruby 1.8.0 (2003-04-11) [i586-linux]


上記、多重代入、メソッド引数以外にも配列の最後の要素も * を
置けるようですが、これはメソッドの引数と同じ解釈ですね。

        class Bar
          def to_a
            [1,2,3,4]
          end
        end
        p [*Bar.new]

	=> ruby 1.6.8 (2002-12-24) [i586-linux]
	   [1, 2, 3, 4]
	=> ruby 1.8.0 (2003-04-11) [i586-linux]
	   [#<Bar:0x4019f1cc>]

--
新井康司 (Koji Arai)

In This Thread