From: Minero Aoki Date: 2004-08-19T14:01:18+09:00 Subject: [ruby-dev:24124] Re: String#each -> String#each_char 青木です。 In mail "[ruby-dev:24121] Re: String#each -> String#each_char" matz@ruby-lang.org (Yukihiro Matsumoto) wrote: > まつもと ゆきひろです > |とりあえず String#each に警告を出してみませんか。 > |同時に移行用メソッドとして String#lines を実装しました。 > > 警告にはstr.lines.eachではなくstr.each_lineを示すほうがよく > ないですか。linesの追加には反対しません(が、名前はどうしよう > かな)。すくなくともIOにも同名のメソッドを用意すべきでしょうね。 いや、map とか select の中で間接的に使われていたとしても、とにかく .lines を間に入れれば移行できるぞ、というほうが便利じゃないですか。 例 str.map {|i| i.sub(/\A=/, '') } ↓ str.lines.map {|i| i.sub(/\A=/, '') } 両方書いとけばいいのかな。 String#each is subject to change; suggest str.each_line or str.lines.each とかでどうでしょう。 メソッド名に関しては、lines 以外には長いのしか思いつきません。 getlines とか。あるいはいっそのこと IO に合わせて readlines とか。 でもあんまり長いと不便ですし、ruby-talk だか core だかで出てた String#chars と合わせるという意味でも lines がいいと思います。 ------------------------------------------------------------------- 青木峰郎 Index: io.c =================================================================== RCS file: /var/cvs/src/ruby/io.c,v retrieving revision 1.288 diff -u -r1.288 io.c --- io.c 17 Aug 2004 09:02:40 -0000 1.288 +++ io.c 19 Aug 2004 04:28:33 -0000 @@ -1592,6 +1592,7 @@ /* * call-seq: * ios.readlines(sep_string=$/) => array + * ios.lines(sep_string=$/) => array * * Reads all of the lines in ios, and returns them in * anArray. Lines are separated by the optional @@ -1602,6 +1603,9 @@ * * f = File.new("testfile") * f.readlines[0] #=> "This is line one\n" + * + * f = File.new("testfile") + * f.lines[0] #=> "This is line one\n" */ static VALUE @@ -5552,6 +5556,7 @@ rb_define_method(rb_cIO, "lineno=", rb_io_set_lineno, 1); rb_define_method(rb_cIO, "readlines", rb_io_readlines, -1); + rb_define_method(rb_cIO, "lines", rb_io_readlines, -1); rb_define_method(rb_cIO, "readpartial", io_readpartial, -1); rb_define_method(rb_cIO, "read", io_read, -1); @@ -5626,6 +5631,7 @@ rb_define_singleton_method(argf, "read", argf_read, -1); rb_define_singleton_method(argf, "readlines", rb_f_readlines, -1); rb_define_singleton_method(argf, "to_a", rb_f_readlines, -1); + rb_define_singleton_method(argf, "lines", rb_f_readlines, -1); rb_define_singleton_method(argf, "gets", rb_f_gets, -1); rb_define_singleton_method(argf, "readline", rb_f_readline, -1); rb_define_singleton_method(argf, "getc", argf_getc, 0); Index: ext/stringio/stringio.c =================================================================== RCS file: /var/cvs/src/ruby/ext/stringio/stringio.c,v retrieving revision 1.28 diff -u -r1.28 stringio.c --- ext/stringio/stringio.c 29 Mar 2004 07:54:24 -0000 1.28 +++ ext/stringio/stringio.c 19 Aug 2004 04:57:58 -0000 @@ -995,6 +995,7 @@ rb_define_method(StringIO, "gets", strio_gets, -1); rb_define_method(StringIO, "readline", strio_readline, -1); rb_define_method(StringIO, "readlines", strio_readlines, -1); + rb_define_method(StringIO, "lines", strio_readlines, -1); rb_define_method(StringIO, "read", strio_read, -1); rb_define_method(StringIO, "sysread", strio_sysread, -1); Index: ext/zlib/zlib.c =================================================================== RCS file: /var/cvs/src/ruby/ext/zlib/zlib.c,v retrieving revision 1.14 diff -u -r1.14 zlib.c --- ext/zlib/zlib.c 6 Aug 2004 16:00:41 -0000 1.14 +++ ext/zlib/zlib.c 19 Aug 2004 04:58:00 -0000 @@ -2807,6 +2807,7 @@ * - #readchar * - #readline * - #readlines + * - #lines * - #ungetc * * Be careful of the footer of the gzip file. A gzip file has the checksum of @@ -3404,6 +3405,7 @@ rb_define_method(cGzipReader, "each", rb_gzreader_each, -1); rb_define_method(cGzipReader, "each_line", rb_gzreader_each, -1); rb_define_method(cGzipReader, "readlines", rb_gzreader_readlines, -1); + rb_define_method(cGzipReader, "lines", rb_gzreader_readlines, -1); rb_define_const(mZlib, "OS_CODE", INT2FIX(OS_CODE)); rb_define_const(mZlib, "OS_MSDOS", INT2FIX(OS_MSDOS));