私はScala 2.11を使用しています。私はのような機能を作成する場合:VarArgs A * vs Seq [A]関数のパラメータ
def func1 (a: Int*) : Int = a.reduce(_+_)
私は大丈夫です
func1(1,2,3,4)
// 10
func1(Seq(1,2,3,4) : _*)
//10
を使用してそれを呼び出します。
しかし、私のような関数リテラルを定義しよう:
val func2:(Int*) => Int = _.reduce(_+_)
私はというエラーを取得:
<console>:5: error: type mismatch;
found : Int* => Int
required: Seq[Int] => Int
lazy val $result = INSTANCE.`func2`
は、なぜそれがない最初にかかわらず、後者の場合にはSeq[Int]
をしたいがありません定義は同じですか?
reduceが最初に呼び出されるように、どのようにvarargsが渡されますか?
[Scalaの関数オブジェクトの可変オブジェクトによるエラー?](https://stackoverflow.com/questions/8623126/error-with-varargs-for-function-objects-in-scala) – Suma