用向量替换函数的参数

Replacing the parameters of a function with a vector

在 Scala 中,如果我有一个函数 f(X, Y, Z),是否可以传递一个代表 (X, Y, Z) 的变量 W,这样我就可以使用 f(W) 而不是 f (X,Y,Z)?如果可以,如何实现?

如果你想传递一个 tuplecase class 而不是三个参数。那么是的,你可以。

首先,如果它是一个函数,你可以:f.tupled(tuple).
如果是 方法 则:(m _).tupled(tuple)。 _(基本一样,只是用eta-expansion把方法变成了函数)

如果你有一个 case class 而不是一个元组,你可以将它的一个实例变成一个元组:W.unapply(w).get (其中 W 是案例 class 的伴随对象,而 w 是实例).