我有一个类似
的课程class BN {
val id: Long
val score: Option[Double]
}
还有一个map: Map[Long, Option[Double]]
我想将map转换为List[BN]
,其中id
是键,score
是值。
除了像Java一样逐步编码之外,还有其他更简便的方法吗?
答案 0 :(得分:2)
您在上面声明的类是抽象的:它声明了2个 groups.LastOrDefault()?.Sub?.Add(line);
字段,但没有提供实现,没有val
修饰符,该代码将无法编译。正如@Luis在评论中提到的,您很可能需要声明一个case class
abstract
答案 1 :(得分:0)
对于数据结构,您确实应该使用case classes
。
除了 Fenixil 的答案外,您还可以在伴随对象中添加一个构造函数,以为调用者隐藏 ugly 内容。
更改为case class
:
case class BN(id: Int, score: Option[Double])
不需要val
,因为case classes
默认是不可变。
在companion object
中提供一个构造函数:
object BN {
def apply(entry: (Int, Option[Double])):BN =
BN(entry._1, entry._2)
}
用法:
val data = Map(1->Option(1.0), 2-> Option(2.0))
data.map(BN.apply)
这会给您:List(BN(1,Some(1)), BN(2,Some(2)))