ruby-reference-manual:2823
From: Nobuhiro IMAI <nov@y...>
Date: Tue, 13 Sep 2011 21:52:03 +0900
Subject: [ruby-reference-manual:2823] [るりまプロジェクト - Bug #5316] Array#join は to_s ではなく to_str が使用される
Issue #5316 has been updated by Nobuhiro IMAI. Category set to doc Assignee set to Nobuhiro IMAI =begin to_str があれば to_str、なければ to_s が呼ばれるようですね。 1.9.2 以降のようですが、以下のようなパッチでどうでしょうか? diff --git a/refm/api/src/_builtin/Array b/refm/api/src/_builtin/Array index f434365..6ff5cb5 100644 --- a/refm/api/src/_builtin/Array +++ b/refm/api/src/_builtin/Array @@ -981,7 +981,11 @@ lv 配列の要素を文字列 sep を間に挟んで連結した文字列を返します。 +#@since 1.9.2 +文字列でない要素に対しては、to_str があれば to_str、なければ to_s した結果を連結します。 +#@else 文字列でない要素に対しては to_s した結果を連結します。 +#@end 要素がまた配列であれば再帰的に (同じ sep を利用して) join した文字列を連結します。 ただし、配列要素が自身を含むような無限にネストした配列に対しては、以下 =end ---------------------------------------- Bug #5316: Array#join は to_s ではなく to_str が使用される http://redmine.ruby-lang.org/issues/5316 Author: Masahiro Tomita Status: Open Priority: Normal Assignee: Nobuhiro IMAI Category: doc Target version: reporter: ruby_version: 1.9.2p290 Array#join の説明に「文字列でない要素に対しては to_s した結果を連結します」とありますが、実際には to_s ではなく to_str が使用されるようです。 % ruby -v -e 'o=Object.new; def o.to_s; "s"; end; def o.to_str; "str"; end; p [o].join' ruby 1.9.2p290 (2011-07-09) [i686-linux] "str" ちなみに 1.8.7 では to_s が使用されてました。 -- http://redmine.ruby-lang.org -- ML: ruby-reference-manual@m... Info: http://QuickML.com/
2822 2011-09-13 14:13 [tommy@t... ] [るりまプロジェクト - Bug #5316][Open] Array#join は to_s ではなく to_str が使用される -> 2823 2011-09-13 14:52 ┣[nov@y... ] [るりまプロジェクト - Bug #5316] Array#join は to_s ではなく to_str が使用される 2824 2011-09-13 15:42 ┗[tommy@t... ] [るりまプロジェクト - Bug #5316] Array#join は to_s ではなく to_str が使用される