天天看點

《從零開始學Swift》學習筆記(Day 19)——函數參數傳遞

原創文章,歡迎轉載。轉載請注明:關東升的部落格 

函數的文法格式如下:

func 函數名(參數清單) -> 傳回值類型 {

    語句組

    return 傳回值

}

關鍵字是func。

多個參數清單之間可以用逗号(,)分隔,也可以沒有參數。

使用箭頭“->”訓示傳回值類型。傳回值有單個值和多個值。如果函數沒有傳回值,則“->傳回值類型”部分可以省略。

如果函數有傳回值,就需要在函數體最後使用return語句;如果沒有傳回值,則函數體中可以省略return語句。

函數定義示例代碼如下:

funcrectangleArea(width:Double, height:Double) -> Double {
    let area = width * height
    return area    
}
 
print("320x480的長方形的面積:\(rectangleArea(320, height:480))")      

傳遞參數 

介紹幾種不同形式的參數。 

  1. 使用外部參數名

為每個參數提供一個可以在函數外部使用的名稱,稱為外部參數名,修改rectangleArea函數的定義如下:

func rectangleArea(Wwidth:Double, H height:Double) -> Double {
    let area = width * height
    return area
}      

在局部參數名之前給一個“外部參數名”,用空格分隔。定義代碼中的W和H就是外部參數名。調用代碼如下:

print
("320x480
的長方形的面積
:\(rectangleArea(W:320, H:480))")      

如果我們提供了外部參數名,那麼在函數調用時,必須使用外部參數名,是以W和H不能省略。 

  1. 省略外部參數名

Swift 2.0提供省略外部參數名可能,在定義函數時,使用下劃線(_)表示外部參數名,示例代碼如下:

funcrectangleArea(width:Double, _ height:Double) -> Double {
    let area = width * height
    return area
}      

這樣函數在調用時就可以省略外部參數名,代碼如下:

print
("320x480
的長方形的面積
:\(rectangleArea(320, 480))")      

在定義函數時第一個參數不需要使用下劃線(_),預設第一個參數名是省略的,其他參數名要想省略則需要使用下劃線(_)符号。 

  1. 參數預設值

在定義函數的時候可以為參數設定一個預設值,當調用函數的時候可以忽略該參數。看下面的一個示例:

func makecoffee(type :String = "卡布奇諾") -> String {
    return "制作一杯\(type)咖啡。"
}      

在調用的時候,如果調用者沒有傳遞參數,則使用預設值。調用代碼如下:

let coffee1 = makecoffee("拿鐵")
let coffee2 = makecoffee()      

最後輸出結果如下:

制作一杯拿鐵咖啡。

制作一杯卡布奇諾咖啡。

  1. 可變參數

Swift中函數的參數個數可以變A化,它可以接受不确定數量的輸入類型參數,它們具有相同的類型。我們可以通過在參數類型名後面加入(...)的方式來訓示這是可變參數。

下面看一個示例:

func sum(numbers:Double...) -> Double {
    var total: Double = 0
    for number in numbers {
        total += number
    }
    return total
}      

下面是兩次調用sum函數代碼:

sum(100.0, 20, 30)
sum(30, 80)      

可以看到每次傳遞參數的個數是不同的。