2015-07-09 2 views
1

Я выполняю задачи в SportsTour Playground для Swift.
И есть функция суммы:Как преобразовать [Int] в Int ... в Swift?

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

И после этого задачи: Написать функцию, которая вычисляет среднее значение своих аргументов.

Я хочу написать л, как:

func avg(numbers: Int...) -> Double { 
    return Double(sumOf(numbers))/Double(numbers.count) 
} 

Но XCode показывает предупреждение: '[Int]' не конвертируется в 'Int'

Кто-нибудь знает, как сделать это Convertion?

PS: Я знаю, что могу получить решение с параметром Array. Меня интересует только решение «Int ...». Это просто академический интерес.

+0

Также дубликата [Передача списков из одной функции в другую Swift] (http://stackoverflow.com/ вопросы/24008547/проходя-листы-из-одного-функции-на-другой-в-Свифт). –

ответ

0

Вместо того, чтобы писать функцию, чтобы получить сумму вашего массива Int используйте reduce

func avg(numbers: [Int]) -> Double { 
    return numbers.reduce(0) { $0 + $1 }/Double(numbers.count) 
} 
+0

Спасибо за функциональный подход к этой задаче, но я спрашиваю о конверсии '[Int]' в 'Int ...'. Во всяком случае, вы также предлагаете очень красивое решение. –

Смежные вопросы