我对 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) {} }
为什么 FooImpl 不匹配 Foo 因为 Foo 是一个特征?我猜我需要在 Bar 中更改 someMethod 的签名,以说明我期待扩展 Foo 或“with Foo”的东西,但我似乎找不到这方面的文档。