我一直在查看 1.9.3 的Ruby 标准库文档。我想知道如何找出我需要明确要求的库。
例如,有人告诉我需要显式地要求json
库,但不需要rubygems
,尽管它们都出现在标准库列表中。
是否有其他地方可以查找有关要求的信息,甚至可以运行 pry/irb 命令来查看已经“需要”的内容?
我一直在查看 1.9.3 的Ruby 标准库文档。我想知道如何找出我需要明确要求的库。
例如,有人告诉我需要显式地要求json
库,但不需要rubygems
,尽管它们都出现在标准库列表中。
是否有其他地方可以查找有关要求的信息,甚至可以运行 pry/irb 命令来查看已经“需要”的内容?
如果您想使用它,则必须要求/加载每个库。
性能方面,require
很聪明,如果库已经加载,则不会加载它们。
但是,如果您想检查是否需要某个库,您应该查看它定义的顶级命名空间,并检查它是否在您当前的范围内定义。例如打开一个 IRB 会话并执行以下操作:
defined? JSON # => nil (it's not loaded)
require 'json' # => true (load it)
defined? JSON # => "constant" (it's loaded)
require 'json' # => false (it's already loaded, so it's not loaded it again)
无论如何,要求东西通常没有什么坏处。如果它们已经被加载,一般来说,该require
语句无效。
一些核心库组件要么自动加载,要么通过引用其顶级符号自动加载。此列表因 Ruby 的一个版本而异。