我剛纔看到List::map
方法聲明,並被其併發症困惑。下面是它的外觀:如何理解scala中的List :: map聲明?
final override def map[B, That](f: A => B)(implicit bf: CanBuildFrom[List[A], B, That]): That = {
嗯,我明白了什麼是implicit
(據我得到的,基於特徵CanBuildFrom
類型類將被自動編譯器引入,如果在範圍內)。但That
在這裏應該是什麼意思?
我明白map(f: A => B)
作爲一種函數的東西,它將每個函數f: A => B
映射到相應的一元值List(A)
和List(B)
之間的函數。所以我期望看到返回類型爲List[B]
。
順便說一句,這就是我們實際上在Option
的情況下。
def map[B](f: A => B): Option[B]
兩個List
和Option
的單子。 List
的訣竅是什麼?
相關:[斯卡拉2.8集合庫是一個「歷史上最長的遺書」的案例?](http://stackoverflow.com/questions/1722726/is-the-scala-2-8-collections-圖書館一個最長的自殺記事本) – stholzm
'這只是一個類型參數。他們可以選擇'C'或'T',或者其他什麼。 ''那個'通常被選擇爲輸出類型的名稱,所以'this'變成'That'。 – jwvh
@stella嘿,只是檢查這是否解決 – slouc