我正在关注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)
答案 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(_) }