2012-09-15 44 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