1

在 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。谁能帮我理解其中的区别?

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 回答