Swift - группирует переменные / свойства, используя расширение - PullRequest
0 голосов
/ 28 февраля 2020

Предполагая, что у меня есть такая структура

struct MyStruct {
  var a1: Int // This property is for feature A
  var a2: Int // This property is for feature A
  var a3: Int // This property is for feature A
  var b1: Int // This property is for feature B
  var b2: Int // This property is for feature B
}

Я хочу знать, есть ли какая-либо техника для создания расширения для MyStruct, чтобы я мог иметь a1, a2, a3 в группу (а именно aFeatures) и b1, b2 в другую группу (bFeatures) без изменения исходной реализации MyStruct, чтобы я мог получить доступ к таким свойствам следующим образом:

let obj = MyStruct()
let a1 = obj.aFeatures.a1 
let b1 = obj.bFeatures.b1

Заранее спасибо!

История вопроса : MyStruct - это распространенная модель данных, которая используется в моем приложении; однако для каждой функции / модуля (A или B) мне нужно использовать только некоторые определенные свойства, связанные с этой функцией, поэтому я хочу сгруппировать свойства, чтобы сделать лог c более понятным.

1 Ответ

1 голос
/ 28 февраля 2020

Вы можете создать вычисленные свойства aFeatures типа (Int,Int,Int) и bFeatures типа (Int,Int)

extension MyStruct {
    var aFeatures: (a1: Int, a2: Int, a3: Int) {
        return (a1, a2, a3)
    }

    var bFeatures: (b1: Int, b2: Int) {
        return (b1, b2)
    }
}

Затем вы можете получить доступ к соответствующим значениям из aFeatures и bFeatures

let obj = MyStruct()
let a1 = obj.aFeatures.a1
let b1 = obj.bFeatures.b1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...