Вы можете ввести переменную stati c, как предложено в комментариях, а затем обновить ее значение, когда root
изменит
class Trie {
static var defaultNode = TrieNode()
var root = TrieNode() {
didSet {
Trie.defaultNode = root
}
}
func add(value: String, node: TrieNode? = Trie.defaultNode) {
Основная проблема в том, что defaultNode
будет то же самое для всех экземпляров Tr ie, а также для того, чтобы все экземпляры могли изменить его, конечно, вы можете let
объявить его так, чтобы он был постоянным, но тогда какой смысл иметь его вообще (хотя я не видите, что вы когда-либо меняли root
?).
Другой вариант - пропустить значение по умолчанию в объявлении функции и вместо этого поместить его в функцию
class Trie {
var root = TrieNode()
func add(value: String, node: TrieNode?) {
let myNode = node ?? root
if value.count == 0 {
myNode.setEnd()
return
}
//... rest of code
}