Zac*_*ins 0 scala class case traits pattern-matching
我的 Scala 项目具有以下特征
sealed trait Value
case class Float(f: Double) extends Value
case class Bool(b: Boolean) extends Value
case object Error extends Value
Run Code Online (Sandbox Code Playgroud)
后来我有了价值lst: List[Value]。
我正在尝试获取列表中第一个元素的值,lst.head.f但出现以下错误Cannot resolve symbol f。
从我从类似主题的其他堆栈溢出问题中收集的信息来看,它应该可以工作,但事实并非如此。
代码需要允许为lst空或第一个Value不是Float. 此代码将安全地将任何Double值提取到Option:
val optF: Option[Double] = lst.headOption.collect{ case Float(f) => f}
Run Code Online (Sandbox Code Playgroud)
这将返回Some如果是在列表中的第一个元素,它是一个Float,否则将返回None。使用标准Option操作检查错误,或仅使用getOrElse.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |