Как объявить переменную для размещения нескольких значений [duplicate]

Попробуйте:

$row = mysqli_fetch_assoc($result);
echo "my result <a href='data/" . $row['classtype'] . ".php'>My account</a>";
129
задан user102008 6 June 2014 в 23:00
поделиться

6 ответов

Splatting еще не на языке , что подтверждается разработчиками. Обходным решением для этого является использование перегрузки или ожидание, если вы не можете добавить перегрузки.

80
ответ дан Hasaan Ali 26 August 2018 в 06:33
поделиться

Вы можете использовать вспомогательную функцию как таковую:

func sumOf (numbers : [Int])  -> Int { return numbers.reduce(0, combine: +) }
func sumOf (numbers : Int...) -> Int { return sumArray (numbers) }
11
ответ дан GoZoner 26 August 2018 в 06:33
поделиться

Я знаю, что этот ответ не отвечает на ваш точный вопрос, но я считаю его достойным внимания. Я тоже начал играть со Свифтом и сразу столкнулся с подобным вопросом. Ответ Manojlds лучше для вашего вопроса, я согласен, но опять же, еще одно обходное решение, с которым я столкнулся. Мне тоже нравится, как и у Логана.

В моем случае я просто хотел передать массив:

func sumOf(numbers: Array<Int>) -> Int {
    var sum = 0
    for number in numbers {
        sum += number
    }
    return sum
}

var someNums = [8,7,2,9,12]
sumOf(someNums)
sumOf([10, 15, 20])

Просто хотел поделиться, на тот случай, если кто-то думал, как я , Большую часть времени я бы предпочел передать массив, как это, но я не думаю, что «Быстро» еще. :) [/ Д2]

0
ответ дан gregthegeek 26 August 2018 в 06:33
поделиться

Вы можете использовать функцию:

typealias Function = [Int] -> Int
let sumOfArray = unsafeBitCast(sumOf, Function.self)
sumOfArray([1, 2, 3])
13
ответ дан Guoye Zhang 26 August 2018 в 06:33
поделиться

Вот работа, которую я нашел. Я знаю, что это не совсем то, что вы хотите, но, похоже, оно работает.

Шаг 1: Объявите функцию, которая вам нужна, вместо массивного аргумента:

func sumOf(numbers: [Int]) -> Int {
    var total = 0
    for i in numbers {
        total += i
    }
    return total
}

Шаг 2: Вызовите это из вашей вариационной функции:

func sumOf(numbers: Int...) -> Int {
    return sumOf(numbers)
}

Шаг 3: Позвоните любым путем:

var variadicSum = sumOf(1, 2, 3, 4, 5)
var arraySum = sumOf([1, 2, 3, 4, 5])

Кажется странным, но он работает в моих тестах , Дайте мне знать, если это вызовет непредвиденные проблемы для всех. Кажется, что Swift разделяет разницу между двумя вызовами с тем же именем функции.

Также, если этот метод будет обновлен, если Apple обновит язык, как подсказывает @ manojid, вам нужно будет только обновить эти функции. В противном случае вам придется пройти и много переименовать.

56
ответ дан Logan 26 August 2018 в 06:33
поделиться

Я сделал это (Wrapper + Identity Mapping):

func addBarButtonItems(types: REWEBarButtonItemType...) {
    addBarButtonItems(types: types.map { $0 })
}

func addBarButtonItems(types: [REWEBarButtonItemType]) {
    // actual implementation
}
1
ответ дан schirrmacher 26 August 2018 в 06:33
поделиться