Иногда я создаю класс, в который я хочу добавить функцию reset
. Например,
class DFA(val initialState:State) {
var states = Map[State,State]()
var currentState: State = initialState
reset
def reset {currentState = initialState}
}
Oops! Разве ваши СУХИЕ колокола не звенят? Я устанавливаю currentState
на initialState
дважды. Один раз в reset
и один раз в конструкторе. Я не могу просто оставить var
неинициализированным, иначе компилятор будет жаловаться.
Конечно, я мог бы
class DFA(val initialState:State) {
var states = Map[State,State]()
var evilNullVariableWeMustNeverUse = null
var currentState: State = evilNullVariableWeMustNeverUse
reset
def reset {currentState = initialState}
}
но я думаю, что обратная сторона этого очевидна.
В этом простом случае все не так плохо, но если у вас есть 5 переменных или более сложная логика, это становится неприятным.
Как мне с этим справиться?