Swift Initialize Struct с дополнительными сохраненными свойствами
=================================================================

Я новичок в Swift, и я пытаюсь разобраться, используя Structs с дополнительными свойствами. Я провел немало поисков и получил что-то, что работает, но он кажется невероятно неэффективным, поэтому удивляюсь, есть ли лучший / более управляемый способ достижения моей цели.

Я хотел бы использовать Structs для представления бизнеса, но я заранее не знаю, какое сочетание свойств может иметь какой-либо конкретный бизнес. Кажется, это означает, что мне нужно создать init () для каждой возможной комбинации параметров.

Вот упрощенный пример (у меня есть еще много свойств):

Затем я могу инициализировать класс следующим образом:

Нет ли способа создать какую-то функцию init (), где параметры являются необязательными? Если бы вы могли указать мне в направлении терминов или понятий для поиска, было бы здорово.

Используйте значения по умолчанию:

Затем вы можете вызвать init следующим образом:



Одним из подходов, который вы можете позаимствовать у других языков ООП, является шаблон построителя параметров. Начните со статического метода, который возвращает конструктор, затем добавьте методы для отдельных параметров и, наконец, вызовите`build()`:

Вот скелетная реализация, которая включает этот вид API:

Это позволяет передавать столько параметров инициализатора, сколько вы считаете нужным, в любом порядке, который вы считаете удобным в данной ситуации.

Основное использование этого подхода - когда вы не знаете, какие параметры вы собираетесь получить, например, когда они поступают из XML или базы данных. Ты можешь позвонить`andXyz` методы в цикле, а затем вызвать`build()` когда у вас нет других атрибутов для установки.