Должны ли узлы в структуре данных содержать ссылку на объект или сам объект? - PullRequest
0 голосов
/ 24 апреля 2018

Я бы хотел использовать древовидную структуру данных для проекта.

Я следовал этому уроку: Структура данных Swift Tree

В этом примере узлы имеют параметр value с универсальным типом.

class Node<T> {
  var value: T
  weak var parent: Node?
  var children: [Node] = []

  init(value: T) {
    self.value = value
  }

  func add(child: Node) {
    children.append(child)
    child.parent = self
  }
}

Мне интересно, должны ли структуры данных просто содержать ссылку на объект модели, а не быть самой моделью?

т.е. Если бы я хотел иметь структуру данных семейного древа, было бы лучше сделать:

class Node {
  var value: Person
  weak var parent: Node?
  var children: [Node] = []

  init(value: Person) {
    self.value = value
  }

  func add(child: Node) {
    children.append(child)
    child.parent = self
  }
}

class Person {
  name: String

  init(name: String) {
    self.name
  }
}

Или это было бы лучше:

class Person {
  let name: String
  weak var parent: Person?
  var children: [Person] = []

  init(name: String) {
    self.name = 
  }

  func add(child: Person) {
    children.append(child)
    child.parent = self
  }
}

Я могу себе представить, что разделение модели и структуры полезно, но тогда я могу также представить, что это усложняет некоторые функции, например. синхронизация с облаком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...