const_get怎么可能有副作用?

时间:2017-08-31 05:18:58

标签: ruby

以下Pry会话是莫名其妙的。我打电话给const_get,AFAIK只是得到一个常数,不知怎的,require被调用(并且失败并出现错误)。但它不能是const_missing钩子,因为常量是定义的,可以通过查看constants方法的输出(以及查看{{1}的返回值)看出})(const_defined?constants似乎都没有monkeypatched):

const_get

1 个答案:

答案 0 :(得分:0)

如果一个类的主体这样做:

class Foo
  autoload :ConstantName, 'some/file'
end

......即使不是这样,常数也会显示为已定义。评估常量的一种方式可以产生副作用,例如打印到终端的东西,打开的网络连接,以及你可以想象放在源文件正文中的任何东西。

Foo::ConstantName # Possibly opens your web browser
                  # and points it to something vulgar.
                  # Then installs a rootkit.