1

Ruby スクリプト内から、冗長性を$VERBOSEグローバル変数の値でテストできます。グローバル変数には次の 3 つの状態があります。

nil in case verbosity level was “0” (silence)
false for level “1” (medium); this is the default
true for level “2” (verbose); this is verbose mode.

それらの違いを理解するために、コードをいじり始めました。

@ubuntu:~$ ruby -W0 -e 'a=10;a=10;@foo'
@ubuntu:~$ ruby -W1 -e 'a=10;a=10;@foo'
@ubuntu:~$ ruby -W2 -e 'a=10;a=10;@foo'
-e:1: warning: possibly useless use of a variable in void context
-e:1: warning: instance variable @foo not initialized
@ubuntu:~$ 

しかし、本当に と の違いを理解できませんでしW1W0。違いを理解するのを手伝ってくれる人はいますか?

4

1 に答える 1

1

実際の違いを確認するには、$STDERR にテキストを出力する必要があります。あなたの例に次の変更を加えました。

ruby -W0 -e 'a=10;a=10;@foo;warn "hello"'

フラグを指定してコードを実行すると、W0実行時にターミナルに何も表示されないことに注意してください。で実行すると、W1によって生成された「エラー」メッセージが表示されますKernel#warn

ruby -W1 -e 'a=10;a=10;@foo;warn "hello"'

最後に、W2インタープリターによって生成されたエラーと警告が表示されます。

于 2013-02-13T21:49:12.540 に答える