Как повторно использовать функцию и обновить соответствующий экземпляр модели данных? - PullRequest
0 голосов
/ 09 июля 2020

В моем коде у меня есть 5 отдельных экземпляров одного и того же объекта, и каждый из них обновляется в функции. Эти функции повторяют один и тот же код, но обновляют соответствующие переменные экземпляра. Учитывая, что они следуют одному и тому же logi c, но обновляют разные переменные экземпляра, есть ли у меня более элегантный вариант, а не переопределить функцию и изменить строки обновления объектной модели на соответствующую модель?

Это то, что структура такая:

var model1: MyObject = MyObject()
var stateOfModel1: StateObj = .empty
var model2: MyObject = MyObject()
var stateOfModel2: StateObj = .empty

functionForModel1(){
    stateOfModel1 = .new_state
    //other reused lines of code
    model1.attr1 = newAtrrVal
}

У меня будет очень похожая функция для модели 2. Если я смогу каким-то образом создать 1 функцию и обновить соответствующие переменные, я смогу сократить количество строк кода и захотел узнать, какие у меня будут варианты.

1 Ответ

1 голос
/ 09 июля 2020

Не уверен, где вы хотите сохранить эту функцию, но вы можете создать класс с функцией следующим образом

func updateModel(model: inout MyObject, state: StateObj) {
    state = .newState
    // more code
    model.attr1 = newAttributeValue
}

Вызовите функцию следующим образом:

self.updateModel(model: &model1, state: &modelState1)

Some OOP принципы

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