Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
В-Из (In-Out) ПараметрыИзменяемые параметры, описанные выше, могут меняться только внутри функции. Но если вы хотите изменить значение параметра и хотите сохранить его после и продолжить работать с ним когда функция закончит работы, определите такой параметр как В-Из (In-Out parameter).
Для этого при объявлении параметра добавьте ключевой слово inout перед его именем. Такой параметр будет иметь значение которое передаётся в(in) функцию, изменяется, и передаётся из(out) функции и заменят оригинальное, изначально переданное значение.
Вы можете передать только изменяемый аргумент в качестве такого параметра. Вы не можете передать константу или литеральное значение как аргумент, потому что константа и литера на могут быть изменены. Вы должны поместить амперсанду (&) непосредственно перед именем изменяемого параметра когда передаёте значение для in-out параметра, показывая этим, что оно может быть изменено функцией.
ВАЖНО: In-Out параметры не могут иметь значения по умолчанию, как и назначенные изменяемыми параметры не могут быть inout. Т.е. параметры обозначенные inout теряют возможность быть обозначенными var и let.
Это пример функции с именем поменяйМестами, которая имеет два inout числа с типом Int с именами а и б:
func поменяйМестами(inout а: Int, inout б: Int) { let временнаяА = а а = б б = временнаяА }
Функция поменяйМестами, просто меняет значение б на а, а значение а на б. Функция делает это сохраняя значения а во временной константе временнаяА, передаёт значение б в а, затем передаёт значение временнаяА в б.
Вы можете вызвать функцию поменяйМестами с двумя изменяемыми значения с типами Int для замены их местами. Обратите внимание, что имена какоетоЧисло и другоеЧисло написаны с амперсандами (&) при передачи их внутрь функции:
var какоетоЧисло = 3 var другоеЧисло = 107 поменяйМестами(&какоетоЧисло, &другоеЧисло) println("Какое-то число сейчас \(какоетоЧисло), а другое число теперь \(другоеЧисло)") // печатает "Какое-то число сейчас 107, а другое число теперь 3"
Пример выше показывает, что оригинальные значения параметров какоетоЧисло и другоеЧисло изменены функцией поменяйМестами, хотя изначально, снаружи функции, они были объявлены с другими значениями.
ВАЖНО: In-Out параметры это не то же самое, что и возвращаемое значение из функции (return). Функция поменяйМестами, не возвращает тип или значение, она непосредственно работает и изменяет оригинальные значения параметров какоетоЧисло и другоеЧисло. In-Out параметры – это альтернативный путь получить эффект изменения вне области кода функции.
|