Именованные параметры

При вызове метода при желании можно использовать имена параметров. Например, makeConnection также можно вызывать следующими способами:

def makeConnection(timeout: Int = 5_000, protocol: String = "http") =
  println(f"timeout = ${timeout}%d, protocol = ${protocol}%s")
makeConnection(timeout=10_000)
// timeout = 10000, protocol = http
makeConnection(protocol="https")
// timeout = 5000, protocol = https
makeConnection(timeout=10_000, protocol="https")
// timeout = 10000, protocol = https
makeConnection(protocol="https", timeout=10_000)
// timeout = 10000, protocol = https

Именованные параметры особенно полезны, когда несколько параметров метода имеют один и тот же тип. Без помощи IDE очень сложно понять, какие параметры установлены в значение true или false, и поэтому код может быть трудночитаемым:

engage(true, true, true, false)

Гораздо более понятным выглядит использование именованных переменных:

engage(
  speedIsSet = true,
  directionIsSet = true,
  picardSaidMakeItSo = true,
  turnedOffParkingBrake = false
)

Ссылки: