Swift語言中與C/C++和Java不同的語法(五)
阿新 • • 發佈:2017-08-28
函數類型 fun java col str logs 默認參數 int函數 ...
這一節將會提到Swift中其他的關於函數的應用,這些內容包括有:
默認參數值和可變參數值、常量參數、返回函數類型和函數嵌套:
一、默認參數值和可變參數值
對默認參數值是指在函數的聲明中就已經定義了參數的初值,比如:
func sayHelloTo(name:String,greeting:String = “Hi”, punctuation:String = “!”){
}
在調用的時候可以是:
sayHelloTo(name:“PlayGround”, punctuation :“!!!”, greeting :“Hi”)
因為對有默認參數的函數來說,有默認參數值的參數是可以調換順序的,但是不建議這樣使用。print函數就是有分割符和結束符初始值的函數。
對變長的參數類型的函數來說,
func mean(numbers : Double ...)-> Double { for number in numbers { sum+=number } return sum/Double(numbers.count) } 調用可以是: mean(2) 也可以是 mean(2,3,4,5,6)
但是一個函數只可以有一個變長的參數。
二、常量參數
與Java和C/C++不同,Swift不可以在函數中改變參數的值,因為傳入參數的值的類型聲明是let,好的函數會盡量避免需要改變函數參數的值。
但是如果要改變參數的值,需要這樣來聲明:
func toBinary(var num:Int)-> String { return num/2 }
將類型聲明為var,
但是這樣的改變只是在函數的內部改變,但是在函數的外面是不改變的,
這是因為這種方式是按值出傳入的,不是引用傳入,只是在函數的內部進行了copy
如果需要痛毆函數改變外部參數的值,需要添加inout
func swapInt(inout a :Int, inout b : Int){ (a,b) = (b,a) }
var x : Int = 1
var y : Int = 2
swapInt(&x,&b)
三、返回函數類型
這個也很簡單,返回的類型是函數就好了:
func tire1 (weight : Int)-> Int { } func tire2 (weight : Int ) ->Int { } func choose (weight : Int) -> (Int) -> Int { return weight>10 ? tire1(weight) : tire2(weight) }
四、函數的嵌套
func feeByPrice(price : Int,weight:Int)->Int {
func choose (weight : Int) -> (Int) -> Int {
return weight>10 ? tire1(weight) : tire2(weight)
}
return ...
}
Swift語言中與C/C++和Java不同的語法(五)