1
私はスカラーにとって非常に新しいです。スカラ:動的に関数を呼び出す
私はrscalaを使ってR関数と統合しています。 たとえば、次のメソッドを使用してR関数を呼び出し、文字列値を取得しています。
メソッドシグネチャ:
デフinvokeS0(機能:リファレンス、引数:任意*):文字列
メソッドの実装
val v= rc.invokeS0("doPred","lemmas"->"Communicate,Design,Java,","frequency"->"3,3,1")
私の問題
しかし、rc.invokeS0はANY関数を呼び出すことができ、したがって任意の数の引数を持つことができます。
私は、関数名をStringとして、引数を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)
}
しかし、引数の数が動的であるため、コードを書く方法はわかりません。率直に言って、私はそれが可能かどうかはわかりませんが、ちょうど私がチェックすると思っていました。
ご意見をいただければ幸いです。
ありがとうございます!どのように ' - >'演算子をパラメータ名とパラメータ値の間で扱うのでしょうか? – Jake
オペレータではありません。 Scalaにはほとんど演算子がありません。 ' - >'は単に 'Any'の暗黙の変換によって定義されたメソッドで、2つの値のうちの1つを生成します。 'a - > b'は'(a、b) 'と同じことを意味しますが、よりよく見えます。 'Map [A、B]'は 'Seq'に変換されると、キーと値のペア'(A、B) 'になります。 – HTNW
私はそれを試してみましょう!感謝万円。私はupvoteと作業時に受け入れることを確認します – Jake