From: Nobuyoshi Nakada Date: 2006-09-17T13:54:56+09:00 Subject: [ruby-dev:29586] Re: nil.to_s なかだです。 At Fri, 8 Sep 2006 01:01:06 +0900, Yukihiro Matsumoto wrote in [ruby-dev:29520]: > あと、考えていることは もうひとつ。 > * 現在特別扱いしている「puts nil」と「puts ary」はどう振る > 舞うべきか。 > > 例外を減らすならいずれも引数をto_sしたものを出力すべき。 > 「目に優しいdump」はあきらめる(そんな重要じゃないし)。 > 「puts ary」は「puts *ary」で代替。 IO#putsは変更されたようですが、IO#printが以前のままです。 print *a でaが空のときにnilと出力されるのはあまりうれしくないです。 Index: io.c =================================================================== RCS file: /cvs/ruby/src/ruby/io.c,v retrieving revision 1.418 diff -p -U 2 -r1.418 io.c --- io.c 2 Sep 2006 14:42:06 -0000 1.418 +++ io.c 17 Sep 2006 04:49:43 -0000 @@ -3690,17 +3690,10 @@ rb_io_print(int argc, VALUE *argv, VALUE } for (i=0; i0) { + rb_io_write(out, argv[i]); + if (!NIL_P(rb_output_fs)) { rb_io_write(out, rb_output_fs); } - switch (TYPE(argv[i])) { - case T_NIL: - rb_io_write(out, rb_str_new2("nil")); - break; - default: - rb_io_write(out, argv[i]); - break; - } } - if (!NIL_P(rb_output_rs)) { + if (argc > 0 && !NIL_P(rb_output_rs)) { rb_io_write(out, rb_output_rs); } -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦