(十一) [Swift]Swift中函數(shù)的參數(shù)

1.單個(gè)參數(shù)的函數(shù)

func func1(param:Int){
    print(param)
}
func1(1) //打印1

2.多個(gè)參數(shù)的函數(shù)

func func2(param1:Int,param2:Int){
    print("param1 \(param1) param2 \(param2)")
}
func2(1, param2: 2) //打印"param1 1 param2 2\n"

3.函數(shù)的outername和innername

(1) innerName 是函數(shù)內(nèi)部使用 outerName 是調(diào)用此函數(shù)時(shí)使用

func func31(outerName1 innerName1:Int,outerName2 innerName2:Int){
    print("params1:\(innerName1) params2:\(innerName2)")
}

(2) 默認(rèn)情況下 innerName = outerName ,第一個(gè)參數(shù)沒有outername

func func32(param1:Int,param2:Int){
     print("param1 \(param1) param2 \(param2)")
}
func32(1, param2: 2)

(3) 指定第一個(gè)參數(shù)的outerName,那么在調(diào)用時(shí)第一個(gè)參數(shù)就必須帶上outername

func func33(param1Outer param1Inner:Int,param2:Int){
    print("param1 \(param1Inner) param2 \(param2)")
}
func33(param1Outer:1, param2: 2)

(4) 如果想忽略outername,可以用 _ 代替,這樣就跟c函數(shù)的調(diào)用形式差不多了

func func3(param1:Int,_ innerName2:Int){
    print("params1:\(param1) params2:\(innerName2)")
}

func3(1, 2)

(5) 類和Struct的構(gòu)造函數(shù)的第一個(gè)參數(shù)的outerName 在調(diào)用時(shí)不能省略

struct Point {
    var x :Int
    var y : Int
}

class PointRef{
    var x :Int
    var y :Int
    init(x:Int,y:Int){
        self.x = x
        self.y = y
    }
}

//let p = Point(1,y:2)   //報(bào)錯(cuò)
//let p2 = PointRef( 2,y:3)  //報(bào)錯(cuò)

let p = Point(x: 1,y:2)   //正確
let p2 = PointRef(x: 2,y:3)  //正確

4.函數(shù)的可變參數(shù)

func func4(params:Int...){
    print(params) 
}
func4(1,2,3,4) //打印"[1, 2, 3, 4]\n"

5.函數(shù)參數(shù)默認(rèn)值

func func5(defaultParam:Int = 1){
    print(defaultParam)
}
func5() //打印1

6.參數(shù)的let var inout

(1) 默認(rèn)情況下param的類型為let,不可更改

func func6(param:Int){
    param = 1   //報(bào)錯(cuò)
}

(2) 可以將函數(shù)的類型改成var,這樣在函數(shù)內(nèi)部就能修改此參數(shù)的值,但是卻依然無法改變所傳參數(shù)本身的值 ,此方式將在swift3中被deprecate

func func7(var param:Int){
    param = 1
}
var a = 2
func7(a)
print(a)  //2

(3) 使用inout可以改變所傳參數(shù)本身

func func8(inout param:Int){
    param = 1
}
var a = 2
func8(&a)
print(a)  //1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容