gpt4 book ai didi

ruby - 如何覆盖 `File::SEPARATOR`

转载 作者:数据小太阳 更新时间:2023-10-29 08:03:13 26 4
gpt4 key购买 nike

File.join 的文档指出:

join(string, ...)string

Returns a new string formed by joining the strings using 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 设置为另一个值来覆盖此行为?

我没有这方面的具体用例,我也不是在寻找解决方法.. 只是好奇。提前谢谢你。

最佳答案

当您重新定义常量时,所有 future 的 Ruby 代码都会看到这个新值。

但是 File.join 的实现是在 C 中引用 C constant of the separator你还没有重新定义。

任何 C 代码都会 reference the original value (这是在初始化 Ruby 解释器时设置的)而任何 Ruby 代码都将引用覆盖/重新定义的值。

关于ruby - 如何覆盖 `File::SEPARATOR`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35078432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com