В этом документе: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html#//apple_ref/doc/uid/TP40014097-CH2-XID_1Функция с переменным числом аргументов
Он упоминает, что при создании for
петли мы можем использовать сокращенные из 0..3
и 0...3
заменить i = 0; i < 3; ++i
и i = 0; i <= 3; ++i
соответственно.
Все очень хорошо.
Далее в документе в разделе «Функции и закрытие» говорится, что функции могут иметь переменное количество аргументов, переданных через массив.
Однако в примере кода мы снова видим ...
.
func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
Это ошибка? Мне кажется, что более интуитивным синтаксисом будет numbers: Int[]
.
Несколько примеров вниз, мы видим еще один пример кода, который имеет точно, что:
func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool {
ли не различать передачи массива и передачи с переменным числом аргументов? Это два разных варианта использования. – Haspemulator
Не в соответствии с документами, которые говорят: _Functions также может принимать переменное количество аргументов, собирая их в array._ прямо перед примером, используя '...' –
. Часть «_collecting into into array_» означает те переменные аргументы доступны как массив, а не 'va_list'. – akashivskyy