2012-09-15 66 views
1

我有一個函數:如何在Scala中將List傳遞給Int *方法?

def test(ints: Int*) = ints.foreach(println(_)) 

如何轉換數組[INT]或序列[INT]爲Int *?

+0

注:這不是一個功能。這是一種方法。這兩者根本不同。 –

+1

第二個注意:由於'test'是一個副作用方法,因此它會更習慣地被聲明爲'def test(...){...}',即沒有'='等號。而且,循環語句可能會更習慣性地寫爲「ints foreach println」,即隱式η轉換而不是顯式。 –

回答

6

這就是_*類型歸屬是什麼:

def test(ints: Int*) { ints foreach println } 

val l = List(1, 2, 3) 

test(l:_*) 
// 1 
// 2 
// 3 
+0

謝謝。沒關係。 – liutao

+0

究竟是什麼':_ *'東西,無論如何?這是演員嗎?它是否在列表中調用某種方法?它是否適用於擴展某些特性的任何類型? – fredoverflow

+0

@FredOverflow:它是「僅」一些語法糖,告訴編譯器你想傳遞一個集合的成員而不是集合本身。 – sschaef