這裏的an article試圖回答你的問題,但在我看來,並不真正成功。
大約在同一時間Pathname#to_str
被刪除Exception#to_str
也是removed - 很明顯,馬茨試圖在此時間之間在「弦狀」類和「非弦狀」類之間畫一條線。 Exception
更改是有意義的 - 一個Exception不能用你的話來說「無損地轉換成一個String並返回」,因爲一個Exception對象包含許多其他信息 - 尤其是堆棧跟蹤 - 會丟失該轉換。
我只能猜測,但我敢打賭,馬茨認爲Pathname
相同的方式,但它不清楚爲什麼。即使對於文檔(1.9.3)來說(在「核心方法」下),「這些方法正在有效地操縱字符串,因爲這是一條道路。」我發現的幾個來源 - 除了一個@MarkThomas cites - 使用Pathname
作爲一個類的示例,其中to_str
確實有意義,可能從Hal Fulton的The Ruby Way中得到一個提示。
我想這不是一個非常令人滿意的答案。如果你真的想知道你可能要問Ruby-Talk or Ruby-Core。你可以試着問Matz [在Twitter上](Yukihiro Matsumoto),但他似乎只用日語交談。 Wycats和Jeremy Kemper可能有一些更深入的瞭解,並且看起來非常容易理解。祝你好運!
P.S. This article有一段「to_str
和朋友的技術說明」,我覺得它很有趣,但它並沒有做更好的工作來回答你的問題。
好問題。 [to_str和'to_str'之間的區別[本討論](http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/96554)具體引用了Pathname作爲原因有'to_str'。 – 2012-01-27 01:42:43