Я конвертирую часть Elasticsearch Java API в Scala. В Java есть несколько методов, которые принимают переменную типа String... indices
, поэтому я пытаюсь предоставить функцию Scala с переменной типа indices: String*
, которая инкапсулирует этот метод Java.
Я не нашел способа преобразовать String*
в String...
.
Я ценю вашу помощь.
Это должно работать:
javaMethod(args: _*)
Пример:
val args = Array("1", "2")
String.format("%s %s", args: _*)
Scala взаимодействует с функциями Java с переменным числом аргументов, поэтому, если бы вы знали аргументы, вы могли бы просто указать их.
Но Scala String*
выйдет как Scala Seq
. Но вы захотите, чтобы содержимое этого Seq
было развернуто и предоставлено в качестве аргументов функции Java.
В Scala есть специальный синтаксис для указания того, что содержимое Seq
должно быть развернуто и передано функции. Вы пишете : _*
после имени Seq
.
Итак, это должно быть что-то вроде этого:
def myScalaFunction( args : String* ) : Unit = {
javaStringVaragsFunction( args : _* )
}
Попробуйте!