首页 > 解决方案 > 如果我在 getOrElse 中使用 print 语句,则无法在 Option 的 getOrElse 路径中分配值

问题描述

我想从中读取一个值application.conf。如果该值不存在,我想分配一个默认值

val keyspaceOption:Option[String] = configuration.getOptional("db.keyspaceName")
  println(s"database will connect with keyspace ${keyspaceOption}")
  val keyspaceName = keyspaceOption.map(keyspace =>{
   keyspace
  })
    .getOrElse(
      println("unable to pick keyspace name from configuration. Using default value")
      "someDefaultName"
    )
  cassandraConnectionService.initKeySpace(cassandraSession,keyspaceName)

我在上面的代码中收到以下错误

Error:(171, 7) ')' expected but string literal found.
      "someDefaultName"

如果我删除了 print 语句,getOrElse那么它就会编译。为什么?

.getOrElse(//works
      //println("unable to pick keyspace name from configuration. Using default value")
      "someDefaultName"
    )

标签: scala

解决方案


你需要更换

.getOrElse(
  println("unable to pick keyspace name from configuration. Using default value")
  "someDefaultName"
)

 .getOrElse{
      println("unable to pick keyspace name from configuration. Using default value");
      "someDefaultName"
 }

推荐阅读