Scala 选项和一些不匹配
Scala Option and Some mismatch
我想将省份解析为大小写class,它抛出不匹配
scala.MatchError:一些(美国)(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]
)
假设起点:
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]
returns 很难推荐跟进
这个:
val value.province = Option(address.province)
val value.city = Option(address.city)
并不像您认为的那样。它试图将 value.province
和 value.city
视为 extractors(与类型不匹配,因此 scala.MatchError
异常)。它不会像我相信你想要的那样改变 value
(因为 value
显然没有这样的设置器)。
由于 value
(显然)是 Access
案例 class,它是不可变的,您只能获得更新的副本:
val value2 = value.copy(
province = Option(address.province),
city = Option(address.city)
)
我想将省份解析为大小写class,它抛出不匹配
scala.MatchError:一些(美国)(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]
)
假设起点:
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]
returns 很难推荐跟进
这个:
val value.province = Option(address.province)
val value.city = Option(address.city)
并不像您认为的那样。它试图将 value.province
和 value.city
视为 extractors(与类型不匹配,因此 scala.MatchError
异常)。它不会像我相信你想要的那样改变 value
(因为 value
显然没有这样的设置器)。
由于 value
(显然)是 Access
案例 class,它是不可变的,您只能获得更新的副本:
val value2 = value.copy(
province = Option(address.province),
city = Option(address.city)
)