С помощью оператора многоточия (...) можно устанавливать произвольное количество параметров одного типа.
func sum(_ numbers: Int...) -> Int{ var total: Int = 0 for number in numbers{ total+=number } return total } sum(1, 2, 3, 4, 5) // 15
Если параметр именнованный, то указывается его имя, после которого после двоеточия указываются через запятую все значения:
func sum(numbers: Int...) -> Int{ var total: Int = 0 for number in numbers{ total+=number } return total } sum(numbers: 1, 2, 3, 4, 5) // 15
По умолчанию все параметры функции представляют константные значения, и мы не можем их изменить. Например, при определении следующей функции мы получим ошибку:
func increase(_ n : Int){ n += 10 }
По умолчанию параметр n представляет константу, и его значение мы не можем изменить. Однако в ряде задач такое поведение может потребоваться. И если все таки необходимо изменить значение параметра, то его надо определить с ключевым словом inout:
func increase(_ n : inout Int){ n += 10 } var d = 20 increase(&d) print(d) // 30
При передачи переменных в функцию к ним добавляется знак амперсанда.То есть фактически мы передаем ссылку на переменную, а не просто ее значение. И, таким образом, сможем изменить значение переменной, определенной вне функции.
Другой показательный пример - обмен значений переменных:
func swap(a: inout Int, b: inout Int){ let temp = a a = b b = temp } var num1 = 10 var num2 = 13 swap(&num1, &num2) print(num1) // 13 print(num2) // 10