gpt4 book ai didi

Ruby:::prefix 是做什么的?

转载 作者:数据小太阳 更新时间:2023-10-29 06:18:57 27 4
gpt4 key购买 nike

我正在阅读 Artifice 的来源并看到:

module Artifice
NET_HTTP = ::Net::HTTP
# ...
end

行:https://github.com/wycats/artifice/blob/master/lib/artifice.rb#L6

为什么不直接做 Net::HTTP而不是 ::Net::HTTP ,即,当您使用 :: 时,它是什么意思?作为前缀?

最佳答案

:: 是范围解析运算符。它的作用是确定可以在什么范围内找到模块。例如:

module Music
module Record
# perhaps a copy of Abbey Road by The Beatles?
end

module EightTrack
# like Gloria Gaynor, they will survive!
end
end

module Record
# for adding an item to the database
end

要从 Music 外部访问 Music::Record,您可以使用 Music::Record

要从 Music::EightTrack 引用 Music::Record,您可以简单地使用 Record,因为它是在相同的范围内定义的( 音乐).

但是,要从 Music::EightTrack 访问负责与数据库接口(interface)的 Record 模块,您不能只使用 Record,因为Ruby 认为您需要 Music::Record。那时您将使用范围解析运算符作为前缀,指定全局/主要范围:::Record

关于Ruby:::prefix 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032844/

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