我想在Scala中使用它:
class MyClass(some: Int, func: AnyRef* => Int) {
}
上面的代码不会编译(为什么?)但是以下代码:
class MyClass(some: Int, func: Seq[AnyRef] => Int) {
}
那没关系,但这两个是等价的吗?如果是这样,那么我如何在func
内使用MyClass
?
答案 0 :(得分:3)
如果您使用括号,第一个(使用varargs)可以工作:
class MyClass(some: Int, func: (AnyRef*) => Int)
func
的两种形式却不尽相同。第一个版本采用vararg输入,因此您可以将其称为func(a,b,c,d)
,但第二个版本将Seq
作为输入,因此您可以将其称为func(Seq(a,b,c,d))
。
比较一下:
class MyClass(some: Int, func: (AnyRef*) => Int) {
def something() = {
func("this","and","that") + 2
}
}
到此:
class MyClass(some: Int, func: Seq[AnyRef] => Int) {
def something() = {
func(Seq("this","and","that")) + 2
}
}