我有以下物件:
sealed abstract class ImputationStrategy(name: String)
object ImputationStrategy {
case object Mean extends ImputationStrategy("Mean")
case object Median extends ImputationStrategy("Median")
case object Mode extends ImputationStrategy("Mode")
def fromString(imputeStrategy: String): Option[ImputationStrategy] = imputeStrategy.toLowerCase match {
case "mean" => Some(Mean)
case "median" => Some(Median)
case "mode" => Some(Mode)
case _ => None
}
}
我在應用程式啟動期間加載的另一個 Config 物件中使用它。
case class ImputerConfig(strategy: ImputationStrategy = ImputationStrategy.Mean)
但不幸的是,當我像這樣決議它時:
imputerConfig = ImputationStrategy.fromString(cfg.getString("imputer.strategy")).orElse(ImputationStrategy.Mean)
它說它期待一個 Option 但找到了 ImputationStrategy.Mean.type。我嘗試將 String 決議為 case 物件的方式有什么問題嗎?
uj5u.com熱心網友回復:
使用getOrElse:
imputerConfig = ImputationStrategy.fromString(cfg.getString("imputer.strategy")).getOrElse(ImputationStrategy.Mean)
orElse接受一個Option. 我認為在你的情況下,你想在決議出錯時提供一個默認物件。因此getOrElse更合適,因為它回傳Option物件的值
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/403041.html
標籤:
上一篇:如何獲取表資料的SQL陳述句
