次のコードはafaikをタイプチェックする必要がありますが、そうではありません。アリティとタイプが変わる可能性があるため、引数タイプに名前を付けることは避けたいと思います。
trait Foobar[K] {
def method: K => Double
}
class Test extends Foobar[(String, Int, Boolean)] {
override def method: (String, Int, Boolean) => Double = (_, _, _) => 3.0
// This also fails
// override def method: (String, Int, Boolean) => Double = { case (_, _, _) => 3.0 }
}
エラーは
タイプの形質FOOBAR =>((文字列、INT、ブール)方法メソッドをオーバーライド=>ダブル;方法法有する互換性のない型オーバーライドDEF方法:(文字列、INT、ブール値)=>ダブル=( 、、_)=> 3.0
これは非常に些細な問題ですが、非常に面倒な問題です。
(String, Int, Boolean) => Double
。doubleに対する3つの引数の関数です。
ただし、1つの引数(3つの要素のタプル)の関数をdoubleにする必要があります。
試してみてください:
class Test extends Foobar[(String, Int, Boolean)] {
override def method: ((String, Int, Boolean)) => Double = {
case (_, _, _) => 3.0
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加