scala通用双括号文字
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)
?
(A,B)
是元组的类型。
scala api 有 zip 的定义,类似。
A Vect
是一个有 2 个类型参数的类型。第一个必须是 Natural
的某种形式(子类型),我们称它为 N
。第二个是在调用点定义的一些不受限制的类型,我们称之为 A
.
zip()
方法接收不同的 Vect
。它必须具有相同的第一个参数类型(不只是任何 Natural
,它必须相同)但第二个参数类型可能不同,我们将其称为 B
。 (它可能与 A
相同,但可能不同,因此它需要不同的标识符。)
zip()
方法 returns 新的 Vect
具有相同的第一个参数类型,但第二个类型参数是一个 2 元素元组(2-ple) A
类型的第一个元素和 B
.
类型的第二个元素
A
和 B
已“压缩”在一起。
我正在学习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)
?
(A,B)
是元组的类型。
scala api 有 zip 的定义,类似。
A Vect
是一个有 2 个类型参数的类型。第一个必须是 Natural
的某种形式(子类型),我们称它为 N
。第二个是在调用点定义的一些不受限制的类型,我们称之为 A
.
zip()
方法接收不同的 Vect
。它必须具有相同的第一个参数类型(不只是任何 Natural
,它必须相同)但第二个参数类型可能不同,我们将其称为 B
。 (它可能与 A
相同,但可能不同,因此它需要不同的标识符。)
zip()
方法 returns 新的 Vect
具有相同的第一个参数类型,但第二个类型参数是一个 2 元素元组(2-ple) A
类型的第一个元素和 B
.
A
和 B
已“压缩”在一起。