我试图让它在 Scala 中工作:
class MyClass(some: Int, func: AnyRef* => Int) {
}
上面的代码不会编译(为什么?),但下面的代码:
class MyClass(some: Int, func: Seq[AnyRef] => Int) {
}
没关系,但两者是等价的吗?如果是这样,那么我该如何使用func
inside MyClass
?
我试图让它在 Scala 中工作:
class MyClass(some: Int, func: AnyRef* => Int) {
}
上面的代码不会编译(为什么?),但下面的代码:
class MyClass(some: Int, func: Seq[AnyRef] => Int) {
}
没关系,但两者是等价的吗?如果是这样,那么我该如何使用func
inside MyClass
?
如果您使用括号,第一个(使用可变参数)有效:
class MyClass(some: Int, func: (AnyRef*) => Int)
然而的两种形式func
并不相同。第一个版本采用可变参数输入,因此您可以将其称为func(a,b,c,d)
,但第二个版本采用 aSeq
作为输入,因此您可以将其称为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
}
}