如何映射到 Scala 中的案例类
How to map to CaseClass in scala
我正在开始使用 scala 我有这个示例 class
case class OrderItem(title: String,price: Long,quantity:Int,cover:Option[String],detailJson: String)
我有 List[OrderItem] 和 List[replaceregex]
我想将字符串替换为列表[Orderitem],我这样做
val s = OrderItem.flatMap(a => target.map (
b =>
if (a.detailJson.contains(start + "\"" + b.unit+ "\""))
OrderItem(
a.title,
a.price,
a.quantity,
a.cover,
a.detailJson.replaceFirst(startregex + b.unit, b.unitreplace))
else None
)).filter(_ != None)
和这个return列表[产品]
我可以从地图上列出 [Orderitem] 吗?
或者我的代码是不好的解决方案你能告诉我吗我要开始了
这个 return 是一个 List[Product]
因为你的 map
操作 return 是一个 OrderItem
或一个 None
并且最近的祖先这 2 个的类型是 Product
.
您可能希望在您的地图中始终 return 一个 Option[OrderItem]
,然后仅保留定义的项目,这要归功于 collect
:
val s = orderItem
.flatMap(a =>
target.map( b =>
if (...)
Some(OrderItem(...)))
else
None
)
.collect { case Some(o) => o }
)
但是等等,因为 Option
扩展了 Seq
你实际上可以只使用 flatMap
并像这样删除 collect
:
val s = orderItem
.flatMap(a =>
target.flatMap(b =>
if (...)
Some(OrderItem(...)))
else
None
)
)
我正在开始使用 scala 我有这个示例 class
case class OrderItem(title: String,price: Long,quantity:Int,cover:Option[String],detailJson: String)
我有 List[OrderItem] 和 List[replaceregex] 我想将字符串替换为列表[Orderitem],我这样做
val s = OrderItem.flatMap(a => target.map (
b =>
if (a.detailJson.contains(start + "\"" + b.unit+ "\""))
OrderItem(
a.title,
a.price,
a.quantity,
a.cover,
a.detailJson.replaceFirst(startregex + b.unit, b.unitreplace))
else None
)).filter(_ != None)
和这个return列表[产品]
我可以从地图上列出 [Orderitem] 吗? 或者我的代码是不好的解决方案你能告诉我吗我要开始了
这个 return 是一个 List[Product]
因为你的 map
操作 return 是一个 OrderItem
或一个 None
并且最近的祖先这 2 个的类型是 Product
.
您可能希望在您的地图中始终 return 一个 Option[OrderItem]
,然后仅保留定义的项目,这要归功于 collect
:
val s = orderItem
.flatMap(a =>
target.map( b =>
if (...)
Some(OrderItem(...)))
else
None
)
.collect { case Some(o) => o }
)
但是等等,因为 Option
扩展了 Seq
你实际上可以只使用 flatMap
并像这样删除 collect
:
val s = orderItem
.flatMap(a =>
target.flatMap(b =>
if (...)
Some(OrderItem(...)))
else
None
)
)