Определение количества параметров, передаваемых методу "динамически" - PullRequest
0 голосов
/ 18 июня 2020

При вызове метода я хочу передать параметр, только если он существует. Ниже мой вызов метода:

    val bindingFuture =
    Http().bindAndHandle(
      endPoints,
      host,
      port,
      if (myParameter.isDefined) myParameter.get else //nothing
    )

Моя проблема в том, что если параметр не существует, я хочу передать методу только три аргумента, игнорируя четвертый. Я хотел бы провести эту оценку внутри метода вызова. Как я могу это сделать?

1 Ответ

1 голос
/ 18 июня 2020

Вот несколько альтернатив:

Вы можете сопоставить с шаблоном опции перед вызовом метода, чтобы решить, какую из двух версий вызвать.

myParameter match {
  case Some(param) =>
    val bindingFuture =
      Http().bindAndHandle(
        endPoints,
        host,
        port,
        param
      )

  case None =>
    val bindingFuture =
      Http().bindAndHandle(
        endPoints,
        host,
        port
      )
}

Другой вариант - проверить, поддерживает ли метод null (очень возможно, если это Java lib) , чтобы вы могли сделать это:

val bindingFuture =
  Http().bindAndHandle(
    endPoints,
    host,
    port,
    myParameter.orNull
  )

Наконец, я бы сделал свою собственную оболочку, которая принимает параметры, позволяющие скрыть шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...