coz*_*tel 6 ruby separator pseudo-globals
文件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"
Run Code Online (Sandbox Code Playgroud)
有人能解释一下发生了什么吗?有没有办法通过设置File::SEPARATOR为另一个值来覆盖此行为?
我没有具体的用例,也没有寻找解决方法..只是好奇。先感谢您。
当您定义重新定义常量时,所有未来的 Ruby 代码都会看到这个新值。
然而,它的实现File.join是在 C 中,它引用了您尚未重新定义的分隔符的 C 常量。
任何 C 代码都将引用原始值(在初始化 Ruby 解释器时设置),而任何 Ruby 代码都将引用覆盖/重新定义的值。
| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |