0

を拡張するトレイトAとクラスがあるとします。A1A

trait A
class A1 extends A

A1いくつかのユニークなプロパティがあります:

class A1 extends A { val hello = "hello" }

そして、 trait のすべてのサブクラスを処理したいメソッドがありますA:

def handle:A = new A1

しかし、A1 で定義された一意のプロパティにアクセスしようとすると、当然のことながら、機能しません。

scala> handle.hello
<console>:11: error: value hello is not a member of A
              handle.hello
                     ^

Aasのサブクラスのインスタンスの処理が完了したらA、すべての一意のプロパティを使用してそれらに再度アクセスするにはどうすればよいでしょうか? このメカニズムはどのように機能しますか?

4

2 に答える 2

0

考えられるメカニズムの 1 つは、追加のインターフェースを特性として定義することです。例えば:

scala> class A
defined class A

scala> trait A1 { val hello = "hello" }
defined trait A1

scala> def handle:A with A1 = new A() with A1
handle: A with A1

scala> handle.hello
res0: String = hello
于 2013-10-16T11:40:12.693 に答える