Как изменить внешнюю переменную внутри функции, передающей параметр Noobie в swift

#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. Хорошо объясненный пример 👍🏻👍🏻!