原です。 >原です。 >(3) >まつもとさんの[ruby-dev:13503]を読んでみたんですが、 > > a = *[] #=> nil > >だけが新しいところで、後は今まで(1.6.4以前)と変わってないと思いました。 >それでいいですよね? これは間違いでした。実際に動かしてみないでモノを言ってました。(^^; 1.6.4で動かしてみると fail するのは以下の通りでした。 #12 failed Assertion: <[]> == <nil> a = *[]; assert(a, nil) #13 failed Assertion: <[1]> == <1> a = *[1]; assert(a, 1) #14 failed Assertion: <[nil]> == <nil> a = *[nil]; assert(a, nil) #15 failed Assertion: <[[]]> == <[]> a = *[[]]; assert(a, []) #16 failed Assertion: <[]> == <nil> a = *[*[]]; assert(a, nil) #17 failed Assertion: <[1]> == <1> a = *[*[1]]; assert(a, 1) #19 failed Assertion: <[nil]> == <[]> *a = nil; assert(a, []) #28 failed Assertion: <[nil]> == <[]> *a = *nil; assert(a, []) #32 failed Assertion: <[nil]> == <[]> *a = *[nil]; assert(a, []) #33 failed Assertion: <[[]]> == <[]> *a = *[[]]; assert(a, []) #51 failed Assertion: <[[], nil, []]> == <[nil, nil, []]> a,b,*c = *[[]]; assert([a,b,c], [nil, nil, []]) #62 failed Assertion: <1> == <[1]> def f; yield [*[1]]; end; f {|a| assert(a, [1])} #64 failed Assertion: <[]> == <nil> def f; yield *nil; end; f {|a| assert(a, nil)} #66 failed Assertion: <[]> == <nil> def f; yield *[]; end; f {|a| assert(a, nil)} #70 failed Assertion: <[]> == <nil> def f; yield *[*[]]; end; f {|a| assert(a, nil)} #73 failed Assertion: <[nil]> == <[]> def f; yield nil; end; f {|*a| assert(a, [])} #86 failed Assertion: <[nil]> == <[]> def f; yield *[nil]; end; f {|*a| assert(a, [])} やっぱりバグらしきものやら、a = *[] #=> a = nil という新仕様や 色んなケースが入り交じっていますね。 そしてこの[ruby-dev:13503]で提出されている仕様はかなり納得の いくものだと思いました。これでいいのではないでしょうか、これで 行きましょう!