【发布时间】:2020-12-10 09:24:19
【问题描述】:
我有一个特质,比如说:
sealed trait foo
还有一个扩展 trait 的案例类:
case class bar(data: List[String]) extends foo
我想写一个访问 bar 数据的函数,但它是作为 foo 传递的,比如说:
def doSomething(x: foo) = {does something with foo.data}
并像这样调用:
val aBar = bar(some list)
doSomething(aBar)
但是当函数 doSomething 需要 foo 类型时,我无法访问。如何解决这个问题以访问条形类型的值?
【问题讨论】:
-
如果你要求一个 Foo 那么你只能使用一个 Foo 提供的东西,这是多态性的基本原则。你可以在 Foo 中声明
data,或者如果特征是密封的,则进行模式匹配。或者也许要求一个酒吧,
标签: scala class inheritance case traits