1

我试图让它在 Scala 中工作:

class MyClass(some: Int, func: AnyRef* => Int) {
}

上面的代码不会编译(为什么?),但下面的代码:

class MyClass(some: Int, func: Seq[AnyRef] => Int) {
}

没关系,但两者是等价的吗?如果是这样,那么我该如何使用funcinside MyClass

4

1 回答 1

3

如果您使用括号,第一个(使用可变参数)有效:

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
  }
}
于 2012-06-22T14:08:02.323 回答