ここにan articleはあなたの質問に答えようとしますが、私の意見では、実際には成功しません。同時にPathname#to_str
頃
はException#to_str
を取り除いたとしてもremovedだった - はっきりマッツは「糸状」と「非糸状」クラス間のこの時点で砂の中に線を引くしようとしていました。 Exception
の変更は意味があります。Exceptionオブジェクトには他の多くの情報(特にスタックトレース)が含まれているため、あなたの言葉を使用するためにExceptionでは "losslessly String to back"に変換できませんその変換。
私は推測することができますが、Matzは同じ理由でPathname
と感じましたが、それはなぜ不明ですか。ある時点でのドキュメンテーション(1.9.3)でさえ、(「コアメソッド」の下で)「これらのメソッドはStringを効果的に操作しています。私が見つけたいくつかの情報源 - @ MarkThomasの引用に加えて - to_str
はとなるクラスの例として、Hal FultonのRuby Wayからおそらく手がかりを得ています。
私はこれが非常に満足のいく答えではないと思います。あなたが本当に知りたいのであれば、Ruby-Talk or Ruby-Coreで質問しなければならないかもしれません。 Matz [ツイッター](松本幸弘)に聞いてみることもできますが、彼は日本語だけを話すようです。 WycatsとJeremy Kemperはもう少し洞察力があるかもしれませんが、かなりアクセス可能なようです。がんばろう!
P.S. This articleには、「技術的な説明to_str
と友人」という興味深いセクションがありますが、あなたの質問に答える仕事はこれ以上はありません。
良い質問です。 'to_s'と' to_str'の違いについてのこのディスカッション(http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/96554)は、特にPathnameを理由として挙げています'to_str'を持つために。 –