この投稿で尋ねられた質問に対する回答を理解しようとしています。
以下のコードは、受け入れられた回答で提案されたソリューションを再現しています。
object Finder {
def find[T <: Node](name: String)(implicit e: T DefaultsTo Node): T =
doFind(name).asInstanceOf[T]
}
sealed class DefaultsTo[A, B]
trait LowPriorityDefaultsTo {
implicit def overrideDefault[A,B] = new DefaultsTo[A,B]
}
object DefaultsTo extends LowPriorityDefaultsTo {
implicit def default[B] = new DefaultsTo[B, B]
}
暗黙的が次のように定義されている場合、私はそれを理解します
(implicit e: DefaultsTo[T, Node])
しかし、代わりに、中置表記のように見えるもので定義されています。DefaultsTo[T, Node]
型が のように書けるとは知りませんでしたT DefaultsTo Node
。これは何が起こっているのですか?