0

これは、モンキーが autotest の Dir[] メソッドにパッチを当てたメソッドの 1 つです。

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 では、1 行で複数の値に複数の変数を割り当てることができます。

その行は次と同等です。

old_warn = $-w
$-w = false

目的が何であるかを尋ねていた場合。Ruby のグローバル変数であり、ユーザーがスクリプトを実行したときに実行可能ファイルにフラグを$-w渡したかどうかを示すブール値を指します。言い換えれば、変数は、スクリプト/プログラムが現在「警告」を出力することになっているかどうかを示します。-wruby

基本的に、そのコード ブロック全体の目的は、そのコアを実行する前に警告を確実にオフにすることです。warn フラグの古い値は新しい変数に保存されます。警告フラグがオフになっています。そして、実行が完了すると、警告フラグが以前の状態にリセットされます。

于 2009-01-19T10:44:19.770 に答える