在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:~$
但实际上无法理解W1
和W0
之间的区别。谁能帮我理解差异呢?
答案 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
将显示错误以及解释器生成的警告。