6

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別の値に設定してこの動作をオーバーライドする方法はありますか?

これには特定のユースケースはありませんし、回避策を探しているわけでもありません..ただ興味があります。前もって感謝します。

4

4 に答える 4

2

定数を再定義すると、今後のすべての Ruby コードでこの新しい値が表示されます。

ただし、の実装は、再定義していないセパレーターの C 定数File.joinを参照するC で行われます。

C コードは元の値(Ruby インタープリターが初期化されたときに設定された値) を参照しますが、Ruby コードはオーバーライド/再定義された値を参照します。

于 2016-01-29T17:55:58.703 に答える