У меня есть простой класс Person
в Swift, который выглядит примерно так:
class Person {
var name = "John Doe"
var age = 18
var children = [Person]?
\\ init function goes here, but does not initialize children array
}
Вместо объявления children
элементов в качестве необязательного массива я мог бы просто объявить его и инициализировать его как пустой массив следующим образом:
var children = [Person]()
Я пытаюсь решить, какой подход лучше. Объявление массива как необязательного массива означает, что он не будет занимать какую-либо память вообще, тогда как пустой массив имеет по крайней мере некоторую память, выделенную для него, правильно? Таким образом, использование необязательного массива означает, что будет по крайней мере некоторое сохранение памяти. Я предполагаю, что мой первый вопрос: действительно ли существует реальная экономия памяти, или мои предположения об этом неправильны?
С другой стороны, если это не является обязательным, то каждый раз, когда я пытаюсь использовать его я должен проверить, чтобы увидеть, если это nil
или нет, прежде чем добавлять или удалять объекты из него. Так что там будет некоторая потеря эффективности (но не так много, я думаю).
Я вроде как факультативный подход. Не у каждого Person
будут дети, так почему бы не позволить children
быть nil
пока Person
решит поселиться и воспитывать семью?
Во всяком случае, я хотел бы знать, есть ли какие-либо другие конкретные преимущества или недостатки для одного подхода или другого. Это вопрос дизайна, который будет возникать снова и снова.