[英]scala generic double brackets literal
我在學習Scala的泛型內容,不知道代碼中literal的含義
sealed trait Natural
sealed trait Vect[N <: Natural, +A]:
def length: Int
def map[B](f: A => B): Vect[N, B]
def zip[B](that: Vect[N, B]): Vect[N, (A, B)]
def concat[M <: Natural, B >: A](that: Vect[M, B]): Vect[Plus[N, M], B]
Vect[N, (A, B)]
是什么意思,尤其是(A, B)
?
Vect
是具有 2 個類型參數的類型。 第一個必須是某種形式的(子類型) Natural
,我們稱之為N
。 第二個是在調用站點定義的一些不受限制的類型,我們稱之為A
。
zip()
方法接收不同的Vect
。 它必須具有相同的第一個參數類型(不僅僅是任何Natural
,它必須相同)但第二個參數類型可能不同,我們將其稱為B
。 (它可能與A
相同,但可能不同,因此它需要不同的標識符。)
zip()
方法返回一個具有相同第一個參數類型的新Vect
,但第二個類型參數是一個 2 元素元組(a 2-ple),第一個元素為A
類型,第二個元素為B
類型。
A
和B
已“壓縮”在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.