2015-10-06 50 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

相關問題