配列を指定して個々のパラメータを取る Scala 関数を呼び出す方法はありますか( ECMAScript 6 のJavaScript Spreadsに似ています )?
ys = [10.0, 2.72, -3.14]
f(x, ...ys);
最もクリーンな構文は次のとおりです。
f(1, ys)
しかし、それは可能ではないようです。Evenf(1, ys:_*)
は機能しません (f(ys:_*)
コンパイラが報告するパラメーターが少なすぎるため、どちらも機能しません - 最初のパラメーターのみが埋められます)。
例:
def f (a:Int, b:Float, c:Float, d:Float): String
val x = 1
val ys = List(10.0, 2.72, -3.14) // note: non-Objects
val result = f(x, ys) // intuitive, but doesn't work
ユース ケース: テスト データ (コレクションから) を、個々のパラメーターを受け入れる既存のメソッドに挿入します。これらはテスト ケースであるため、ys の #params が一致せず、実行時エラーまたは誤った結果が返されても問題ありません。
問題は、パラメータのコレクションが与えられた場合に、Scala が個々のパラメータを受け取る関数を呼び出すためのクリーンな構文を許可するかどうかであり、それが優れた設計であるかどうかではありません(ただし、意見は歓迎されます)。