3

私はこの種のコードを使用しようとしています:

trait Outer {
  type Inner

  def f(x:Inner) : Void 
}

object test {
  def apply(o: Outer, i : Outer#Inner) : Void = 
    o.f(i)
}

最後から 2 行目でエラーが発生しました。

型の不一致; 見つかった: i.type (基礎となるタイプ Outer#Inner) が必要: o.Inner

適用の署名をに変更すると

def apply(o: Outer, i : o.Inner) : Void

その後、エラーが発生しました:

不正な依存メソッド タイプ

このコードを機能させることは可能ですか?

4

2 に答える 2

5

メソッド依存型を利用できます (依存メソッド型の説得力のある使用例は何ですか?例を参照してください)。これには、2 つのパラメーター リストを使用する必要があります。

trait Outer {
  type Inner
  def f(x:Inner): Unit 
}

object test {
  def apply( o: Outer )( i : o.Inner) { o.f(i) }
}
于 2013-05-30T10:45:55.167 に答える