На этом шаге мы рассмотрим назначение и использование таких аргументов.
Чем больше аргументов по умолчанию используется, тем больше появляется вариантов для вызова конструктора. Чем больше вариантов - тем больше двусмысленности, поэтому Kotlin позволяет использовать в вызове конструктора именованные аргументы, аналогичные именованным аргументам в вызовах функций.
Сравните два варианта создания экземпляра Player:
val player = Player(name="Madrigal", healthPoints =100, isBlessed=true, isImmortal=false) val player = Player("Madrigal", 100, true, false)
Какой вариант, по-вашему, понятнее? Если первый, то мы с вами солидарны.
Синтаксис именованных аргументов позволяет указать имя параметра для каждого аргумента, чтобы внести дополнительную ясность. Это особенно полезно, когда имеется несколько параметров одного типа: если в вызов конструктора передаются значения true и false, именованные аргументы помогут вам распознать, какое значение какому параметру принадлежит. Кроме устранения двусмысленности, именованные аргументы дают еще одно преимущество: они позволяют передавать аргументы в функцию или конструктор в произвольном порядке. Неименованные аргументы должны передаваться в том порядке, в каком они указаны в конструкторе.
Вы могли заметить, что вспомогательный конструктор, который вы написали для Player, использует именованные аргументы, похожие на те, которыми мы уже пользовались
Если вам надо передать в конструктор или в функцию несколько аргументов, мы рекомендуем использовать именованные аргументы. Благодаря им проще понять, какие аргументы какому
параметру передаются.
На следующем шаге мы рассмотрим блок инициализации.
constructor(name: String) : this(name,
healthPoints = 100,
isBlessed = true,
isImmortal = false)
}