Я хочу проверить аргументы вторичного конструктора, но сначала я вынужден сначала вызвать первичный конструктор. Один из способов - поставить чеки внутри звонка на this
, но он может стать уродливым, если условия сложны.Проверка аргументов вторичного конструктора
def this(initDollars: Int, initCents: Int) = {
this(if (initDollars >= 0 && initCents >= 0) initDollars * 100 + initCents else throw new Exception("Negative values"))
}
Есть ли лучшие способы сделать это?
Вы всегда можете проверить аргументы после вызова. В противном случае напишите функцию, которая проверит значения и либо выбросит исключение, либо вернет значение для перехода к второму конструктору: 'this (validateAndSum (initDollars, initCents))' –
Мне очень нравится ваша идея, но она работает только если у нас есть один параметр – damluar
У вас может быть вторичный конструктор с кортежем, он в любом случае вторичен, пользователи класса, вероятно, его не увидят. –