[英]scala syntax understanding _* and type*
我在理解此語法時遇到一些困難:
(as: List[A]) => val h = insert(e, as: _*)}
和
def insert(h: H, as: A*): H = as.foldLeft(h)((hh, a) => insert(a, hh))
_*
和A*
是什么意思?
謝謝。
A*
是一個定義為vararg的參數,它等效於Java中的A...
范例:
scala> def f(i: Int*) = i.length
f: (i: Int*)Int
scala> f(1,2,3)
res50: Int = 3
:_*
是一個轉換器,可以將List類型的參數轉換為vararg。
范例:
scala> f(List(1,2,3):_*)
res51: Int = 3
def insert(h: H, as: A*): H = as.foldLeft(h)((hh, a) => insert(a, hh))
A *代表可變參數:您可以根據需要提供任意數量的方法
(as: List[A]) => val h = insert(e, as: _*)}
在這種情況下,序列將轉換為vararg參數(單個列表將轉換為n個類型為A的單個參數)。
有時這是必要的,恕我直言,它在概念層面上並不會改變太多(因為您仍然可以同時調用fold,map等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.