#swift #function #variables #parameters #call
#swift #функция #переменные #параметры #вызов
Вопрос:
Как изменить внешнюю переменную внутри функции, передавая параметр?; Noobie в swift
var varIsTrue:Bool = true
import UIKit
extension UIDevice {
class ViewController: UIViewController {
override func viewDidLoad() {
changeVar(varIsTrue , false)
}
func changeVar(_ varName:? , _ arg:Bool){
varName = arg // Xcode cannot assign to value: 'varName' is a 'let' constant
}
// varName:? Don't know if the question mark should be a :String some kind of argument or what?
}
}
Комментарии:
1. Что не так с
varIsTrue = false
?2. Вы можете использовать inout
3. @George_E varITrue = false не будет передавать ссылку на изменение, она получит параметр, который находится в функции.. как упоминалось ранее, inout — это способ 2 передать ссылку см. Алекс Герсин, Его пример был хорошо объяснен 👍🏻👍🏻 спасибо, Алекс Герсин
4. @dinolin я имел в виду использовать его вместо
changeVar(varIsTrue, false)
. Данный ответ является той же функциональностьюvarIsTrue = false
.
Ответ №1:
Предполагая, что ваш пример — это просто абстракция, и вы пытаетесь понять концепцию изменения переменной внутри функции, это было бы решением.
Как уже упоминалось в комментариях, вам необходимо использовать inout
и передать ссылку (обозначенную ведущей amp;
) вашей «внешней переменной».
var varIsTrue: Bool = true
changeVar(amp;varIsTrue , false)
func changeVar(_ property: inout Bool , _ arg: Bool){
property = arg
}
Комментарии:
1. Хорошо объясненный пример 👍🏻👍🏻!