Scala对象组合-访问不同类型的嵌套对象字段(例如Array vs Option [Int])

时间:2018-08-14 14:47:31

标签: scala object nested composition case-class

我是scala的新手。要温柔。我有这些嵌套对象(我了解我使用的OOP概念是“对象组合”,即对象内部的对象)

case class T(na: Option[Int], du: Option[Int], sz: Option[Int], a: Option[Int])
case class BF(s: Int, a: Array[T], tr: Array[T], cs: Array[T])


val t = T(Some(1), Some(1),Some(1),Some(1) )
val bf = BF(5, Array(t), Array(t) ,Array(t))

这有效:

bf.s
bf.a

我想做:

bf.a.na

出什么问题了? 问候。

1 个答案:

答案 0 :(得分:1)

bf.a返回项目数组,而不是单个项目。您需要执行以下操作:

bf.a.map(_.na) // res0: Array[Option[Int]] = Array(Some(1))

这是说,对于a中的每个项目,返回该项目的na值。相当于写bf.a.map(x => x.na)