Я легко могу справиться с ошибочным присваиванием в конструкторе:
val v: BigDecimal
constructor(s: String) {
v = try {
BigDecimal(s)
}
catch (e: Exception) {
BigDecimal.ZERO
}
}
Но как мне справиться со случаем, если мне нужно заполнить две переменные? Это не работает:
constructor(s: String) {
(v, type) = try {
Pair(BigDecimal(s), RealTypes.Normal)
}
catch (e: Exception) {
Pair(BigDecimal.ZERO, RealTypes.NaN)
}
}
Валы могут быть назначены только один раз, конечно, хотя я не уверен, что конструктор не может быть исключением из этого правила. Но на самом деле это тоже не работает из-за этого правила:
constructor(value: String) {
v = try {
type = RealTypes.Normal
BigDecimal(value, context)
}
catch (e: Exception) {
type = RealTypes.NaN
BigDecimal.ZERO
}
}