Ben şu durum sınıfı:T [A <: C [U], B <: C [U], U] T [A, B] olarak kullanılabilecek genel bir tip oluşturmak mümkün mü?
type Area[T] = Length[T] <*> Length[T]
Ancak, ben <*>
üç parametre bekler ve sadece verdik belirten bir hata alıyorum:
case class <*>[Q <: Quantity[T], R <: Quantity[T], T](value: T)
extends Quantity[T]
ben bu şekilde kullanmak istiyorum iki. Ben böyle çalışmak istiyorum:
type Area[T] = <*>[Length[T], Length[T], T]
Denedim aşağıdaki fakat bana bir hata verdi:
trait Quantity[T] {
type Value = T
def value: T
}
case class <*>[Q <: Quantity[_],
R <: Quantity[_]](value: Q#Value)
(implicit eq: Q#Value =:= R#Value)
extends Quantity[Q#Value]
Error:(13, 110) illegal inheritance;
self-type<*>[Q,R]
does not conform toQuantity[_$1]
's selftypeQuantity[_$1]
case class <*>[Q <: Quantity[_], R <: Quantity[_]](value: Q#Value) (implicit eq: Q#Value =:= R#Value) extends Quantity[Q#Value] ^
bir çözüm bunun için var mı? Gerekirse, iyi infix sözdizimini istememe rağmen vaka sınıflarını yeniden adlandırmaya gerek yok.
@Kigyo, derleme yapmaz. T türü hala bilinmiyor – wedens
@wedens Haklısınız. Repl'de farklı bir şey girmiş olmalıyım. Teşekkürler. – Kigyo
Eski bir soru olduğunu biliyorum, ancak ilk Miktar [_] ve ikincisinin farklı türler olarak kabul edilmesi sorun değil (aynı kapsamda _ $ 1 farklı kapsamda kullanılır)? Sanırım başıma birkaç kez geldim. – Governa