1. 程式人生 > >Swift語言中與C/C++和Java不同的語法(五)

Swift語言中與C/C++和Java不同的語法(五)

函數類型 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(23456

但是一個函數只可以有一個變長的參數。

二、常量參數

與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不同的語法(五)