在scala中写入多行

时间:2015-10-14 06:54:11

标签: scala

这是我的代码:

bufferedWriter.write(Play.current.configuration.getString("play.compile.c.command").get.replace("{objectname}", registerdJobDetails.executableNm.mkString.split('.')(0)).replace("{executablename}", getExecutableFolderName(jobId) + registerdJobDetails.executableNm))
bufferedWriter.newLine()
bufferedWriter.write(Play.current.configuration.getString("play.runable.c.command").get.replace("{objectname}", registerdJobDetails.executableNm.mkString.split('.')(0)))

只有第一行被写入,但其他行没有被写入。

我收到错误

  

java.util.NoSuchElementException:None.get

2 个答案:

答案 0 :(得分:1)

最有可能的问题是Play.current.configuration.getString("play.runable.c.command")类型Option[String]并且正在调用Option上的get方法,而这种方法几乎不应该被调用。如果这种方法甚至不存在,世界将是一个更好的地方。我离题了。

如果对getString的此调用返回None,则对get的调用会抛出一个无法获取值的异常。

答案 1 :(得分:0)

似乎Play.current.configuration.getString("play.runable.c.command")返回None,在调用get时会抛出异常。

永远不应该这样做!使用mapgetOrElse的组合可以避免意外行为。例如:

val runableConfig = Play.current.configuration.getString("play.runable.c.command") val s = runableConfig.map { case runable => runable.replace("{objectname}", registerdJobDetails.executableNm.mkString.split('.')(0) }.getOrElse("NO CONFIG FOUND") bufferedWriter.write(s)

或者您甚至可以在地图中制作bufferedWriter.write(s)

如果您不知道,map方法在定义选项时执行(它是Some(x)),并在选项为None

时忽略
  

注意:如果它返回None尝试调试它。确认您没有拼写错误,并且您正在阅读正确的配置文件