Создание нескольких комбинаций массивов без быстрого - PullRequest
0 голосов
/ 28 марта 2020

У меня есть несколько массивов (назовем их массивами A, B, C и D).

Я хочу иметь возможность переключать то, что включено в мастер-массив, с помощью UISwitches для каждого массива .

Чтобы не повторять все массивы для всех комбинаций (A, AB, A C, AD, AB C, ABD, ACD, ABCD, B, B C, et c ...), есть ли способ сделать это программным способом?

Для ясности, "A", "B", "C" и "D" - это четыре разных массива, а не содержимое в одном массиве.

Спасибо - любая помощь очень ценится.

1 Ответ

0 голосов
/ 28 марта 2020

Как насчет этого как отправной точки?

import Foundation

struct ArrayManager {

    var A: [Int] = []
    var B: [Int] = []
    var C: [Int] = []
    var D: [Int] = []

    var includeA = false
    var includeB = false
    var includeC = false
    var includeD = false

    var masterArray: [Int] {
        get {
            var result: [Int] = []

            if includeA { result.append(contentsOf: A) }
            if includeB { result.append(contentsOf: B) }
            if includeC { result.append(contentsOf: C) }
            if includeD { result.append(contentsOf: D) }

            return result
        }
    }
}

var manager = ArrayManager()

manager.A = [1, 2]
manager.B = [3, 4]
manager.C = [5, 6]
manager.D = [7, 8]

manager.includeA = true

print("manager.masterArray: \(manager.masterArray)")

manager.includeB = true

print("manager.masterArray: \(manager.masterArray)")

manager.includeC = true

print("manager.masterArray: \(manager.masterArray)")

manager.includeD = true

print("manager.masterArray: \(manager.masterArray)")

Вывод:

manager.masterArray: [1, 2]
manager.masterArray: [1, 2, 3, 4]
manager.masterArray: [1, 2, 3, 4, 5, 6]
manager.masterArray: [1, 2, 3, 4, 5, 6, 7, 8]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...