Что эквивалентно String ... в Scala - PullRequest
4 голосов
/ 21 марта 2012

Название задает вопрос. В основном я использую библиотеку Java, которая принимает строку ... в качестве параметра. Как я могу назвать это в моем скала-коде?

Я добавлю немного больше:

из скала-кода

def myScalaFunc(params:String*) {
   val myJavaClass = new JavaClass()
   myJavaClass(params)
}

Ответы [ 3 ]

6 голосов
/ 21 марта 2012

Вы должны расширить params в серию аргументов, а не просто в один аргумент коллекции.Самый простой способ сделать это - сказать params: _*.

Если Java выглядит следующим образом:

public class VarargTest {
  public void javaFunc(String... args) { 
    // something
  }
}

Тогда вызывающая программа Scala выглядит следующим образом:

def scalaFunc(params: String*) = 
  (new VarargTest).javaFunc(params: _*)
5 голосов
/ 21 марта 2012

Если метод определен:

void method(String... param)

Затем либо вызовите его так:

method("String 1", "String 2")

Или разверните Seq, используя этот специальный синтаксис:

method(Seq("String 1", "String 2"): _*)

Учитывая ваш пример кода (я предполагаю, что мое редактирование правильное):

myJavaClass.myJavaMethod(params: _*)
1 голос
/ 21 марта 2012

В Java это синтаксис метода, который получает переменное число аргументов:

void method(String... param)

В Scala эквивалентный синтаксис такой:

def method (param:String*)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...