Scala:动态调用函数



我对scala很陌生。

我正在使用 rscala 与 R 函数集成。 例如,我使用以下方法来调用 R 函数并检索字符串值。

方法签名:

def invokeS0(函数:引用,参数:任何*(:字符串

方法实现

val v= rc.invokeS0("doPred","lemmas"->"Communicate,Design,Java,","frequency"->"3,3,1")

我的问题

但是,rc.invokeS0 可以调用 ANY 函数,因此具有任意数量的参数。

我正在考虑构建一个包装器方法,该方法将函数名称作为字符串,将参数作为 Map。也许是这样的:

private def invokeRStringFunction(functionName: String = "testFunction", args: Map[String,String]): Unit =
{
/**Iterate through map to generate following code*/
val v= rc.invokeS0(functionName,mapKey1->mapValue1,mapKey2->mapValue2 etc etc)
}

但是我不确定如何编写代码,因为参数的数量是动态的。坦率地说,我不确定这是否可能,但我想我会检查一下,以防万一。

任何提示将不胜感激。

Map[String, String]转换为带有args.toSeqSeq[(String, String)],然后使用_*归因将其作为参数序列传递,而不仅仅是一个参数。

def invokeRStringFunction(functionName: String, args: Map[String, String]): Unit
= rc.invokeS0(functionName, args.toSeq: _*)

最新更新