Swift心得笔记之函数

2020-01-08 22:50:29丽君

        temperatureInCelsius = kelvin - 273.15
    }
    init(_ celsius: Double) {
        temperatureInCelsius = celsius
    }
}
let boilingPointOfWater = Celsius(fromFahrenheit: 212.0)
// boilingPointOfWater.temperatureInCelsius 是 100.0
let freezingPointOfWater = Celsius(fromKelvin: 273.15)
// freezingPointOfWater.temperatureInCelsius 是 0.0
let bodyTemperature = Celsius(37.0)
// bodyTemperature.temperatureInCelsius 是 37.0 

 

对外部参数名的娴熟应用可以极好的抽象初始化过程。可以看看 json-swift library 中的应用。

默认参数值

可以在函数定义里写上函数的默认值,这样在调用的时候可以不传这个值:

 

复制代码
func add(value1 v1:Int, value2 p1:Int = 2) -> Int{
    return v1 + p1
}
add(value1: 2, value2: 4)   // 2 + 4
add(value1: 1)  // 1 + 2

 

如果你没有提供外部参数名,设置默认参数值会自动提供默认参数名。

可变参数

可变参数 (Variadic Parameters) 可以接受一个以上的参数值。比如计算平均数:

 

复制代码
func arithmeticMean(numbers: Double...) -> Double {
    var total: Double = 0
    for number in numbers { // numbers is [Double]
        total += number
    }
    return total / Double(numbers.count)
}
arithmeticMean(1, 2, 3, 4, 5)
arithmeticMean(3, 8, 19)

 

如果不止一个参数,需要把可变参数放在最后,否则会报错。应该这样:

 

复制代码
func sumAddValue(addValue:Int=0, numbers: Int...) -> Int {
    var sum = 0
    for number in numbers { // numbers === [Int]
        sum += number + addValue
    }
    return sum
}
sumAddValue(addValue: 2, 2,4,5) // (2+2) + (4+2) + (5+2) = 17