Значения массива Swift Pass как отдельные параметры - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть следующий код, используя Bond .

combineLatest(settings.userAutoRefreshInterval, config.value?.userRefreshInterval).observeNext { [weak self] _ in
    self?.updateAutoUserRefresh()
}.dispose(in: self.bag)

Конечно, в этом есть ошибка сборки, так как combineLatest Бонда не принимает опции.

Я подумал сделать if let и написать в основном один и тот же код дважды, но это выглядит очень грязно.

В JavaScript вы можете передать массив с каждым элементом в качестве отдельного параметра в функцию. Как следующее:

function test(a, b, c) {
    console.log("a", a);
    console.log("b", b);
    console.log("c", c);
}

const array = ["Hello", "world", "!!!"];
test(...array);

Есть ли способ сделать это в Swift?

Если нет, то есть идеи, как заставить мой код работать и сделать его максимально чистым?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Если все ваши аргументы имеют одинаковый тип, то вы можете использовать varargs параметры:

func test(_ args: String...) {
    args.forEach { print $0 }
}

Затем вы называете это как

test("Life", "Liberty", "Pursuit of Happiness")
0 голосов
/ 20 ноября 2018

Вы можете передать кортеж

func test(aTuple: (String, String, String)) {
    print(aTuple.0)
    print(aTuple.1)
    print(aTuple.2)
}

let theTuple = ("Hello", "world", "!!!")
test(aTuple: theTuple)

Надеюсь, это поможет.

...