Ich habe eine generische Klasse, die von multidimensionalen Daten (d.h. n-dimensionale Arary
s oder Vector
s) aufgebaut ist.
In diesem Fall möchte ich, dass die Klasse nur um einen Typ instanziiert wird (z. B. Vector
), abgesehen von ihrer Dimensionalität (Vector[Vector[T]]
, aber nicht Vector[Array[T]]
).
multidimensionalen Datentyp in Scala
Mit dieser Klasse Signatur:
class Foo[T](x: Vector[T], y: Bar[T])
wie kann ich garantieren, dass T zum Beispiel wäre Vector[T]
oder Vector[Vector[T]]
(oder etc ...), aber nicht Array[T]
oder Vector[Array[T]]
?
Was ist der Unterschied zwischen Vectors [Array [Int]], die zweidimensionale mit unterschiedlichen Sammlungstypen und nicht erlaubt ist, und Vector [Array [Int]], die mit nur einem Kollektionstyp (Vector) eindimensional ist und die Elementtyp nur * passiert * zu Array [Int]? Was passiert, wenn dir jemand einen Vector [Vector [Int] geben will, aber sie wollen nur, dass du dich mit der äußeren Dimension beschäftigst und ihnen den inneren überlässt? Ab sofort, was wollen Sie brechen das Liskov Substitutionsprinzip: I in einem Vektor passieren kann [jeder], aber ich kann kein Vektor [Seq [_]] geben, auch wenn es ein Subtyp ist. – HTNW