File.join的文档声明:
join(string, ...)→string返回通过使用File::SEPARATOR连接字符串而形成的新字符串。File.join("usr", "mail", "gumby") #=> "usr/mail/gumby"
然而,下面的结果显示了一种不同的行为。
File::SEPARATOR #=> "/"
File::SEPARATOR = "doge"
File::SEPARATOR #=> "doge"
File.join("so", "wow") #=> "so/wow"有人能解释一下发生了什么吗?是否有方法通过将File::SEPARATOR设置为另一个值来覆盖此行为?
我对此没有具体的用例,也没有寻找解决办法。只是好奇而已。提前谢谢你。
发布于 2016-01-29 17:55:58
发布于 2016-01-29 11:28:22
File为您提供了一个FILE::SEPARATOR常量,它为操作系统提供了正确的文件分隔符,也给出了File.join方法,该方法用操作系统的正确文件分隔符分隔参数。
似乎--不管文档怎么说--函数不使用常量。
2.3.0 :004 > File::Separator
=> "/"
2.3.0 :005 > File::Separator = "!!"
(irb):5: warning: already initialized constant File::Separator
=> "!!"
2.3.0 :006 > File::Separator
=> "!!"
2.3.0 :007 > File.join("one", "two")
=> "one/two"
2.3.0 :008 > File::Separator
=> "!!"考虑到您可以在Ruby中更改常量的值,这可能只是很好的编程。
发布于 2016-01-29 08:36:08
File::SEPARATOR是一个常量,不能重新定义它。在Windows中也有File:ALT_SEPARATOR。也许你可以在这里找到答案:https://www.ruby-forum.com/topic/124904
https://stackoverflow.com/questions/35078432
复制相似问题