2017-02-15 10 views
0

外部システムコマンドからstdoutとstderrを処理する方法については、Alvin AlexanderのScala Process Loggerのexampleに従っています。私はこの例の大部分を得て、それをどのように使用するのかを理解していますが、私はappend _の目的を理解するのが難しいと感じています。誰かがそれを理解するのを助けてくれますか?ドキュメントはあまりにも曖昧です。ここでScalaプロセスロガー

#!/bin/sh 
exec scala "$0" "[email protected]" 
!# 
import sys.process._ 

val stdout = new StringBuilder 
val stderr = new StringBuilder 
val status = "ls -al FRED" ! ProcessLogger(stdout append _, stderr append _) 

println(status) 
println("stdout: " + stdout) 
println("stderr: " + stderr) 
+0

のように書き換えることができますか? – pedrofurla

+0

@pedrofurlaはい、私は今それを理解しています、基本的にコマンドの出力を 'stdout'に追加します。あなたのコメントのおかげで、 – Explorer

答えて

1

はScalaDocがProcessLoggerコンストラクタのいずれかを記述する方法は次のとおりです。

def apply(fout: (String) ⇒ Unit, ferr: (String) ⇒ Unit): ProcessLogger 

だからそれは、それぞれが出力しない(すなわちUnit)でString入力を取って、2つの引数を取ります。引数stdout append _Stringの入力(_)をStringBuilderに追加しています。言い換えれば

stdout append _はあなたが `STDOUTはappend _`の意味を理解していますstr => stdout.append(str)

+0

、あなたの答えの最後の行がすべてを合計します。 Scalaでは時々ドットを省略することができますが、構文を理解できませんでした。説明してくれてありがとう。 – Explorer