Почему классы случая расширяют только продукт, а не продукт1, Product2, ..., Productn?

После того, как я узнал, что классы случаев расширяют продукт, я Удивлялся, почему они не расширяют Productn. Например, учитывая код, как:

case class Foo(a: Int)

, я ожидал foo (1) .asinstanceof [product1 [int]] для работы, но он не (проверяется со Scala 2.9.1 и подтверждено Другие источники и продуктом Документация).

Я был заинтересован в этом, потому что хотел объявить классы, такие как:

abstract class UnaryOp[T1 <: Exp[_], R](t1: T1) extends Exp[R] {
  this: Product1[T1] =>
}

Таким образом, узел для унаправления, должен быть реализован продуктом1. Было бы здорово, если бы быть просто классом в случае с одним параметром будет достаточно для этого.

13
задан Blaisorblade 7 September 2011 в 18:33
поделиться