Есть суперкласс, в котором реализован метод оптимизации параметров у наследуемых классов. Метод принимает переменные и массив для возможных значений, далее перебирает все возможные комбинации из переменных и возможных значений и создает большой массив, затем идет цикл: устанавливается значение для каждого параметра и уже проверка этих параметров.
class SuperClass {
//…
final func optimize(pars: inout (Any, [Any])…) {
//…
}
}
class InheritedClass1: SuperClass {
var par1: Int
var par2: Bool
//…
}
class InheritedClass2: SuperClass {
var par1: Double
var par2: Int
var par3: Int
//…
}
inheritedClass1 = InheritedClass1()
inheritedClass1.optimize(pars: (inheritedClass1.par1, Array(stride(from: 18, through: 28, by: 1))), (inheritedClass1.par2, [true, false]))
У наследуемых классов может быть любое кол-во параметров и разные типы. Значения для оптимизации par1 можно установить например вот так: Array(stride(from: 18, through: 28, by: 1)), для par2 просто [true, false]
Столкнулся с проблемой - inout не работает для variadic параметрами. Как это все лучше реализовать в таком случае?