[#24112] ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。原因を追求してたのですが、力尽きました。

19 messages 2004/08/18
[#24127] Re: ruby/tk crashes on bcc32 — Hidetoshi NAGAI <nagai@...> 2004/08/19

永井@知能.九工大です.

[#24131] Re: ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/08/19

山本です。

[#24135] Re: ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/08/19

山本です。試行錯誤の結果、これで落ちなくなりました。

[ruby-dev:24124] Re: String#each -> String#each_char

From: Minero Aoki <aamine@...>
Date: 2004-08-19 05:01:18 UTC
List: ruby-dev #24124
青木です。

  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 <em>ios</em>, and returns them in
  *  <i>anArray</i>. 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));

In This Thread