0
我有一個泛型類,它由多維數據構成(即n維Arary
s或Vector
s)。
在這種情況下,我希望該類僅由一種類型實例化(例如Vector
),除了它的維度(Vector[Vector[T]]
但不是Vector[Array[T]]
)。
Scala中的多維數據類型
有了這個類簽名:
class Foo[T](x: Vector[T], y: Bar[T])
我怎麼能保證T公司將是例如Vector[T]
或Vector[Vector[T]]
(或等...),但不Array[T]
或Vector[Array[T]]
?
Vector [Array [Int]]與兩個不同的集合類型(不允許)和Vector [Array [Int]]之間的區別是一維的,只有一個集合類型(Vector),而Vector元素類型只是*發生*爲Array [Int]?如果有人想給你一個Vector [Vector [Int]],會發生什麼情況,但他們只希望你處理外部維度並將內部維度留給他們?到目前爲止,你想要打破Liskov替換原則:我可以傳入Vector [Any],但是我不能給你一個Vector [Seq [_]],即使它是一個子類型。 – HTNW