Дополнительно о параметрах функций

Последнее обновление: 01.01.2018

С помощью оператора многоточия (...) можно устанавливать произвольное количество параметров одного типа.

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

Выходные параметры inout

По умолчанию все параметры функции представляют константные значения, и мы не можем их изменить. Например, при определении следующей функции мы получим ошибку:

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
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850