比方说,我有一个函数斯卡拉开放写入到标准输出或文件
writeToFileOrStdout(fname: String = Nil) = { ... }
如果用户通过对FNAME一个字符串值,然后我想打开一个文件使用该名称和写入;否则,我想打印到标准输出。我总是可以写一个if语句来处理这个问题,但是如何在fname上编写case语句并打开正确的相应outputStream?
val outStream = fname match {
case Nil => ???
case _ => new java.io.FileOutputStream(new java.io.File(fname))
}
outStream.write(...)
谢谢!
def writeToFileOrStdout(fname: Option[String] = None) = {
val outStream = fname match{
case Some(name) => new java.io.FileOutputStream(new java.io.File(name))
case None => System.out
}
...
}
它总是使用Option
一个可选的输入,而不是使用null
一个好主意: