2015-10-06 52 views
2

有时我需要指定一个永远不会使用的变量。例如:像/ dev/null这样的变量是否存在ruby

stdin, stdout, status = Open3.capture3("ls ./dir") 

在这种情况下,我只在stdout兴趣,所以我不需要stdinstatus。您好我可以阻止未使用的变量的赋值在这种情况下>

我应该做这样的事情?:

null, stdout, null = Open3.capture3("ls ./dir") 

感谢。

+1

请注意'capture3'返回stdout,stderr和状态。 – Stefan

+0

谢谢,从http://blog.honeybadger.io/capturing-stdout-stderr-from-shell-commands-via-ruby/借用了代码 – mipmip

回答

2

下划线在这样的情况下通常使用

_, stdout, _ = Open3.capture3("ls ./dir") 
+2

这个SO问题有更多关于_作为变量使用的信息:http ://stackoverflow.com/questions/9559561/where-and-how-is-the-underscore-variable-specified –

+0

这是真的,但我不知道我在找'_'。 – mipmip

0

像这样:

_, stdout, _ = Open3.capture3("ls ./dir") 
2

Open3.capture3返回Array一个实例。你可以用解构并把它当作一个元组,(这是常见的),或者你可以把结果作为一个实际的数组:

stdout = Open3.capture3("ls ./dir")[1] 

这不是地道。

Rubocop suggests前述未使用的变量名与在多个赋值_

_stdin, stdout, _status = Open3.capture3("ls ./dir") 

NB:如上所述通过@Stefan所指出的,通过返回capture3第二流实际上是stderr

相关问题