Tour of Scala

Именованные Аргументы

Language

При вызове методов можно конкретно указывать название задаваемого аргумента следующим образом:

def printName(first: String, last: String): Unit =
  println(s"$first $last")

printName("John", "Public")                 // выводит "John Public"
printName(first = "John", last = "Public")  // выводит "John Public"
printName(last = "Public", first = "John")  // выводит "John Public"
printName("Elton", last = "John")           // выводит "Elton John"

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

Обратите внимание, что именованные аргументы могут быть указаны в любом порядке. Однако, если аргументы расположены не в порядке параметров метода (читается слева направо), остальные аргументы должны быть названы.

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

def printFullName(first: String, middle: String = "Q.", last: String): Unit =
  println(s"$first $middle $last")

printFullName(first = "John", last = "Public")      // выводит "John Q. Public"
printFullName("John", last = "Public")              // выводит "John Q. Public"
printFullName("John", middle = "Quincy", "Public")  // выводит "John Quincy Public"
printFullName(last = "Public", first = "John")      // выводит "John Q. Public"
printFullName(last = "Public", "John")              // ошибка: позиция после именованного аргумента

Именованные аргументы работают при вызове Java методов, но только в том случае, если используемая Java библиотека была скомпилирована с флагом -parameters.

Contributors to this page: