0

这是猴子从 autotest 修补 Dir[] 方法的一种方法

class Dir
  class << self
    alias :old_index :[]
    def [](*args)
      $-w, old_warn = false, $-w
      old_index(*args)
    ensure
      $-w = old_warn
    end
  end
end

你能帮忙解释一下这条线$-w, old_warn = false, $-w吗?提前致谢。

4

1 回答 1

3

您可以在 Ruby 中将多个变量分配给一行中的多个值。

该行等效于以下内容:

old_warn = $-w
$-w = false

如果你问目的是什么;$-w是 Ruby 中的一个全局变量,它指向一个布尔值,指示用户在运行脚本时是否将-w标志传递给ruby可执行文件。换句话说,该变量指示脚本/程序当前是否应该打印“警告”。

本质上,整个代码块的目的是确保在执行其核心之前关闭警告。警告标志的旧值被保存到一个新变量中;警告标志关闭;然后当执行完成时,警告标志被重新设置回原来的样子。

于 2009-01-19T10:44:19.770 回答