我想將省決議為案例類,它會引發不匹配
scala.MatchError: Some(USA) (of class scala.Some)
val result = EntityUtils.toString(entity,"UTF-8")
val address = JsonParser.parse(result).extract[Address]
val value.province = Option(address.province)
val value.city = Option(address.city)
case class Access(
device: String,
deviceType: String,
os: String,
event: String,
net: String,
channel: String,
uid: String,
nu: Int,
ip: String,
time: Long,
version: String,
province: Option[String],
city: Option[String],
product: Option[Product]
)
uj5u.com熱心網友回復:
假設起點:
val province: Option[String] = ???
您可以通過簡單的模式匹配獲取字串:
province match {
case Some(stringValue) => JsonParser.parse(stringValue).extract[Province] //use parser to go from string to a case class
case None => .. //maybe provide a default value, depends on your context
}
注意:在不知道extract[T]回傳什么的情況下,很難推薦后續行動
uj5u.com熱心網友回復:
這個:
val value.province = Option(address.province)
val value.city = Option(address.city)
不會做你認為它會做的事情。它試圖將value.province和value.city視為提取器(與型別不匹配,因此是scala.MatchError例外)。它不會value像我相信的那樣發生變異(因為value顯然沒有這樣的二傳手)。
由于value是(顯然)Access案例類,它是不可變的,您只能獲得更新的副本:
val value2 = value.copy(
province = Option(address.province),
city = Option(address.city)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/366267.html
標籤:斯卡拉 apache-flink
下一篇:TypeClasse實作最佳語法
