swift學習記錄(函數--輸入輸出參數)

在輸入輸出參數之前,先說說變量參數和常量參數

變量可以修改,常量不可以修改,這是衆所周知的事實。

函數中的參數,默認是 常量,所以想在函數體內修改參數的值,就會出現編譯錯誤。所以,在定義函數時,需要將參數定義爲變量

變量參數的定義方式:

定義變量參數的方法就是在參數名 前 加上 變量 修飾符 var 

func sum(var num1:Int, num2:Int)->Int{
    num1 = 10
    return num1+num2
}

print(sum(100, num2: 2))
//12

變量參數只能在函數體內修改,如果我們讓在函數體修改的參數,在函數體外任然生效。這時我們就需要定義輸入輸出函數

輸入輸出函數定義方式:

定義函數時,在參數名前加上 inout 關鍵字,這樣我們就定義了一個輸入輸出參數

代碼事例:

var boyName = "張大三"
var girlName = "李小七"

func exchange(inout boy:String ,inout girl:String){
    let name = boy
    boy = girl
    girl = name
}

exchange(&boyName, girl: &girlName)
print("boyName is \(boyName) and girlName is \(girlName)")
//boyName is 李小七 and girlName is 張大三


通過沒有返回值的 exchange 函數,將boyName 和 girlName 交換 。在調用函數之後再去打印boyName和girlName。發現在函數體內修改的參數,在函數體外依然生效。

需要注意的是,在調用含有輸入輸出參數的 函數 時,需要實參前加 & 。表示這個值可以被函數修改

注意:輸入輸出參數不能有默認值,不能是可變參數。如果一個參數被 inout 標記,這個參數就不能被 var 或 let 標記。

輸入輸出參數只是,實現函數體內修改 參數值,在函數體外依然生效的方式之一。我們還可以通過別的方式實現。例如:

var boyName = "張大三"
var girlName = "李小七"
func exchange(boy:String ,girl:String){
    girlName = boy
    boyName = girl
}
exchange(boyName, girl: girlName)
print("boyName is \(boyName) and girlName is \(girlName)")
//boyName is 李小七 and girlName is 張大三

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章