簡體   English   中英

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)

Vect是具有 2 個類型參數的類型。 第一個必須是某種形式的(子類型) Natural ,我們稱之為N 第二個是在調用站點定義的一些不受限制的類型,我們稱之為A

zip()方法接收不同的Vect 它必須具有相同的第一個參數類型(不僅僅是任何Natural ,它必須相同)但第二個參數類型可能不同,我們將其稱為B (它可能與A相同,但可能不同,因此它需要不同的標識符。)

zip()方法返回一個具有相同第一個參數類型的新Vect ,但第二個類型參數是一個 2 元素元組(a 2-ple),第一個元素為A類型,第二個元素為B類型。

AB已“壓縮”在一起。

(A,B)是元組的類型。

scala api 有 zip 的定義,類似。

參考: https://docs.scala-lang.org/tour/tuples.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM