鍍金池/ 問答/Scala/ scala Some(variable)作為方法Option參數(shù)的默認(rèn)值無法編譯

scala Some(variable)作為方法Option參數(shù)的默認(rèn)值無法編譯

使用Some(salt),Option(salt)作為方法參數(shù)默認(rèn)值無法通過編譯

case 1 使用Some(salt)作為參數(shù)默認(rèn)值無法通過編譯

object Digest {
  import utils.Hex._

  val salt = Configuration.load(Environment.simple()).get[String]("hash.salt")

  def digest(s: String, salt: Option[String] = Some(salt)): String = {
    ...
  }
}
[info] Compiling 1 Scala source to /home/xiao/weibos_service/target/scala-2.12/classes ...                                                        
[error] /home/xiao/weibos_service/app/utils/encrypt/Digest.scala:12:55: type mismatch;
[error]  found   : Option[String]                                                                   
[error]  required: String                                                                             
[error]   def digest(s: String, salt: Option[String] = Option(salt)): String = {                       
[error]                                                       ^                                       
[error] one error found                                                                                
[error] (compile:compileIncremental) Compilation failed                                                
[error] Total time: 1 s, completed 2018-3-14 17:41:30                  

case 2 使用另一個新的成員saltOpt=Some(salt)作為參數(shù)默認(rèn)值就能通過編譯了

object Digest {
  import utils.Hex._

  val salt = Configuration.load(Environment.simple()).get[String]("hash.salt")
  private val someSalt = Option(salt)

  def digest(s: String, salt: Option[String] = someSalt): String = {
    ...
  }
}

???

回答
編輯回答
萌二代
val salt = Configuration.load(Environment.simple()).get[String]("hash.salt")
def digest(s: String, salt: Option[String] = Some(salt)): String = {

digest里面的salt和外面定義的salt重復(fù)了,改個名字就好了。

2018年3月30日 01:34