【发布时间】:2012-08-20 20:48:31
【问题描述】:
我对 Scala 很陌生,如果这是一个非常简单的问题,请原谅我,但我找不到任何可以帮助我的东西,或者我找不到正确的搜索词。我怎样才能做到这一点?
scala> trait Foo
defined trait Foo
scala> class FooImpl extends Foo
defined class FooImpl
scala> trait Bar { def someMethod(foo: Foo) }
defined trait Bar
scala> class BarImpl extends Bar { def someMethod(foo: FooImpl) {} }
<console>:10: error: class BarImpl needs to be abstract, since method someMethod in trait Bar of type (foo: Foo)Unit is not defined
(Note that Foo does not match FooImpl)
class BarImpl extends Bar { def someMethod(foo: FooImpl) {} }
既然 Foo 是一个特征,为什么 FooImpl 不匹配 Foo?我猜我需要在 Bar 中更改 someMethod 的签名,以说明我期待扩展 Foo 或“with Foo”的东西,但我似乎找不到这方面的文档。
【问题讨论】:
标签: scala methods parameters match extends