When to use inout parameters?

前端 未结 7 1585
情书的邮戳
情书的邮戳 2020-12-13 03:15

When passing a class or primitive type into a function, any change made in the function to the parameter will be reflected outside of the class. This is basically the same t

7条回答
  •  北海茫月
    2020-12-13 04:08

    inout means that modifying the local variable will also modify the passed-in parameters. Without it, the passed-in parameters will remain the same value. Trying to think of reference type when you are using inout and value type without using it.

    For example:

    import UIKit
    
    var num1: Int = 1
    var char1: Character = "a"
    
    func changeNumber(var num: Int) {
        num = 2
        print(num) // 2
        print(num1) // 1
    }
    changeNumber(num1)
    
    func changeChar(inout char: Character) {
        char = "b"
        print(char) // b
        print(char1) // b
    }
    changeChar(&char1)
    

    A good use case will be swap function that it will modify the passed-in parameters.

    Swift 3+ Note: Starting in Swift 3, the inout keyword must come after the colon and before the type. For example, Swift 3+ now requires func changeChar(char: inout Character).

提交回复
热议问题