有一个错误报告Pathname#to_str doesn't appear to work anymore。在Pathname中使用to_str
可以让您在使用字符串的任何地方使用Pathname,例如使用Dir
,system
等。然而,错误报告被拒绝,并且它从提交消息中显示故意删除了to_str
方法。
我不明白这一点 - 路径名可以毫不费力地转换为字符串并返回,当使用不使用路径名的API时,它会非常方便。
那么为什么to_str
不适合路径名,何时to_str
可以使用?
答案 0 :(得分:2)
这是an article试图回答你的问题,但在我看来,并没有真正成功。
大约在同一时间Pathname#to_str
被移除Exception#to_str
也是removed - 显然Matz正试图在“stringlike”和“non”之间画一条线在沙子里-stringlike“类。 Exception
更改是有意义的 - 使用您的单词,Exception无法“无损地转换为String并返回”,因为Exception对象包含许多其他信息 - 特别是堆栈跟踪 - 在转换中会丢失。
我只能猜测,但我敢打赌Matz对Pathname
有同样的看法,尽管不清楚为什么。甚至在文档(1.9.3)中也说过(在“核心方法”下),“这些方法正在有效地操纵一个字符串,因为这就是所有的路径。”我找到的几个来源 - 除了一个@MarkThomas引用 - 使用Pathname
作为to_str
有意义的类的示例,可能采取来自Hal Fulton的 The Ruby Way 的提示。
我想这不是一个非常令人满意的答案。如果你真的想知道你可能要问Ruby-Talk or Ruby-Core。你可以尝试在推特上问Matz(Yukihiro Matsumoto),但他似乎只用日语交谈。 Wycats和Jeremy Kemper可能会有更多的洞察力,而且看起来很容易获得。祝你好运!
P.S。 This article有一个“to_str
和朋友的技术解释”部分,我发现这些部分很有意思,但它在回答您的问题方面没有做得更好。