命令行选项“W1”与“W0”有何不同?

时间:2013-02-13 21:31:00

标签: ruby ruby-1.9.3

在Ruby脚本中,可以使用$VERBOSE全局变量的值来测试详细程度,该变量可以有三种状态:

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之间的区别。谁能帮我理解差异呢?

1 个答案:

答案 0 :(得分: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将显示错误以及解释器生成的警告。