2017-02-15 30 views
0

我正在關注由Alvin Alexander撰寫的關於Scala進程記錄器的example,其中討論瞭如何從外部系統命令處理stdout和stderr。我得到了大部分的例子,現在理解如何使用它,但我很難理解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 

所以它需要兩個參數,每次服用String輸入沒有輸出(即Unit)。自變量stdout append _String輸入(即_)附加到StringBuilder

換句話說,stdout append _可以改寫爲str => stdout.append(str)

+0

感謝您的評論,您的答案的最後一行總結了這一切。 Scala允許你有時省略點,我只是不理解語法。再次感謝您的解釋。 – Explorer