Scala进程记录器

时间:2017-02-15 21:54:32

标签: scala logging

我正在关注Alvin Alexander的Scala Process Logger的example,它讨论了如何从外部系统命令处理stdout和stderr。我得到了大部分示例,现在了解如何使用它,但我发现很难理解append _的目的。有人可以帮我理解吗?这些文件非常模糊。

#!/bin/sh
exec scala "$0" "$@"
!#
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)

2 个答案:

答案 0 :(得分:3)

以下是ScalaDoc如何描述其中一个ProcessLogger构造函数:

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

因此它需要两个参数,每个参数都输入String输入而没有输出(即Unit)。参数stdout append _String输入(_)附加到StringBuilder

换句话说,stdout append _可以重写为str => stdout.append(str)

答案 1 :(得分:0)

stdout append _

等于:

{ _ => stdout.append(_) }