Function 我可以从scala中的seq中填充名为parameters的函数吗?

Function 我可以从scala中的seq中填充名为parameters的函数吗?,function,scala,parameter-passing,sequence,Function,Scala,Parameter Passing,Sequence,如果我有Seq'a->1,'b->一些文本,我如何调用一个函数fa:Int,b:String,用Seq中的参数填充,并用名称a,b绑定?我相信,你应该能够使用。类似这样的未经测试: def applyWithNamedParameters[T: ClassTag](obj: T, m: MethodSymbol, params: Map[String, Any]) { val methodMirror = scala.universe.runtime.currentMirror.reflec

如果我有Seq'a->1,'b->一些文本,我如何调用一个函数fa:Int,b:String,用Seq中的参数填充,并用名称a,b绑定?

我相信,你应该能够使用。类似这样的未经测试:

def applyWithNamedParameters[T: ClassTag](obj: T, m: MethodSymbol, params: Map[String, Any]) {
  val methodMirror = scala.universe.runtime.currentMirror.reflect(obj).reflectMethod(m)
  val paramNames = m.paramss.flatten.map(_.name.toString)
  val paramValues = paramNames.map(params)

  methodMirror.apply(paramValues)
}

参数作为映射而不是Seq给出,以简化代码。

Seq的可能副本可能是Seq'a->1,'b->some text,或Seq'b->some text,'a->1,因此varargs和tupled不可用。从《我如何理解》一文中可以看出:然而,并没有类似的Scala语法。