scala - scala 通用双括号文字
问题描述
我在学习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)
?
解决方案
AVect
是具有 2 个类型参数的类型。第一个必须是 (sub-type of) 的某种形式Natural
,我们称之为N
。第二个是在调用站点定义的一些不受限制的类型,我们称之为A
.
该zip()
方法接收不同的Vect
. 它必须具有相同的第一个参数类型(不仅仅是 any Natural
,它必须相同),但第二个参数类型可能不同,我们称之为B
. (它可能与A
但可能不同,因此它需要不同的标识符。)
该zip()
方法返回一个新Vect
的,具有相同的第一个参数类型,但第二个类型参数是一个 2 元素元组(一个 2-ple),第一个元素是 type A
,第二个元素是 type B
。
和已被“压缩”在一起A
。B
推荐阅读
- jakarta-ee - Weblogic Server 何时支持 Java EE 8?
- oauth-2.0 - 如何减少 Keycloak 中访问/刷新令牌的大小?
- javascript - 如何将公用文件夹中的javascript文件导入SRC文件夹并使用该文件的功能
- authorize.net - 如何在 Authorize.Net 中进行双月订阅?
- c# - 执行 DbCommand 失败。.NET 核心
- firebase - 找不到函数错误:名称:[get]。在firestore安全规则模拟
- sql - 差距和岛屿:基于外部表分裂岛屿
- windows - Heroku登录成功,但随后冻结
- django - 在 Django 中更新递归外键时排除实例
- asp.net-web-api2 - 如何通过 Swashbuckle 在 swagger-ui 中直接导航到特定版本的 API