gpt4 book ai didi

ruby - Require 返回一个数组而不是一个 bool 值

转载 作者:数据小太阳 更新时间:2023-10-29 07:00:44 25 4
gpt4 key购买 nike

根据 Kernel#require 的文档该方法返回一个 bool 值。然而,我在 IRB session 中注意到对于某些文件 require 返回一个数组。

ruby-1.8.7-p330 :001 > require 'net/http'
=> true
ruby-1.8.7-p330 :002 > require 'date'
=> true
ruby-1.8.7-p330 :003 > require 'lib/data_provider'
=> ["DataProviders"]

返回的数组包含在 data_provider.rb 中定义的模块的名称:

module DataProviders
module Cached
class Foo
# ...
end
end

class Foo
# ...
end
end

这是我做错了什么或一些未记录的 require 行为的标志吗?

最佳答案

我也无法重现。但是某些 gem 可能会覆盖 Kernel#require:

module Kernel
alias_method :old_require, :require
def require(str)
old_modules = []
ObjectSpace.each_object(Module) {|m| old_modules << m }

old_require(str)

new_modules = []
ObjectSpace.each_object(Module) {|m| new_modules << m unless old_modules.include?(m) }
new_modules
end
end

当你尝试要求时

module DataProviders
module Cached
class Foo
end
end
class Foo
end
end

你会得到

irb(main):012:0> require 'data_provider'
=> [DataProviders::Cached::Foo, DataProviders::Foo, DataProviders::Cached, DataProviders]

关于ruby - Require 返回一个数组而不是一个 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328500/

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