Именование аргументы
Когда мы вызываем функцию, которая имеет некоторые параметры, мы можем передавать аргументы по именам этих параметров. Такой подход может улучшить читаемость вашего кода, особенно если функция имеет множество параметров. Кроме того, это удобный способ изменить порядок аргументов, передаваемых при вызове функции.
Улучшение удобочитаемости кода
Представьте себе кассира, который продает билеты в кино, и цена билета остается неизменной в течение дня. Вам нужно рассчитать, сколько денег будет у нашего кассира в конце рабочего дня. Мы можем сделать это с помощью функции, которая имеет три параметра:
fun calcEndDayAmount(startAmount: Int, ticketPrice: Int, soldTickets: Int) =
startAmount + ticketPrice * soldTicketsstartAmount- это начальная сумма в кассе.ticketPrice- это цена билета.soldTickets- это количество билетов, проданных в этот день.
Это обычная функция, поэтому мы можем вызвать ее следующим образом:
val amount = calcEndDayAmount(1000, 10, 500) // 6000Это сработало бы нормально, хотя есть одна проблема: неясные аргументы. Конечно, мы можем объявлять стандартные переменные и передавать их дальше, но иногда приходится работать с литералами, а не с переменными. Именованные аргументы могут сделать наш код более читабельным. Чтобы устранить эту проблему, вы можете присвоить имя каждому аргументу этой функции:
val amount = calcEndDayAmount(
startAmount = 1000,
ticketPrice = 10,
soldTickets = 500
) // 6000Теперь код легко понять!
Изменение порядка аргументов
Вы можете изменить порядок аргументов в вызове функции с помощью именованных аргументов. Всё, что вам нужно сделать, это указать имена в любом нужном вам порядке:
Именованные и позиционные аргументы
Вы также можете вызвать функцию с именованными и обычными (позиционными) аргументами, если именованные аргументы помещаются после позиционных:
Ещё вы можете использовать позиционные аргументы после именованных аргументов, но вам необходимо поддерживать их порядок. Например:
Аргументы по умолчанию и именованные аргументы
Вы также можете использовать именованные аргументы и аргументы по умолчанию вместе. Как вы, вероятно, знаете, аргументы по умолчанию иногда сбивают с толку, поскольку Kotlin может не понимать, какие параметры назначать.
Давайте изменим предыдущую функцию и сделаем первый параметр необязательным:
Предположим, мы хотели бы вызвать эту функцию только с двумя последними параметрами. Но это не сработает:
Здесь 10 присваивается первому необязательному аргументу startAmount, а не второму параметру ticketPrice.
Чтобы вызвать эту функцию, используйте именованные аргументы:
Теперь это работает!
Именованные аргументы и значения по умолчанию
Значения по умолчанию для параметров функции могут быть постоянными, а могут и не быть. Они также могут быть другим именованным аргументом или функцией.
Например:
Это не сработает, так как параметр b не инициализирован:
Заключение
Подводя итог всему вышесказанному, разумно используйте именованные аргументы, чтобы улучшить читаемость кода и изменить порядок аргументов, когда некоторые параметры имеют значения по умолчанию.
Last updated