簡體   English   中英

Scala語法理解_ *和類型*

[英]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.

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