五、函数和闭包
函数
-
常见形式
// 无形式参数的函数 func sayHelloWorld() -> String { return "hello world" } print(sayHelloWorld()) // 多形式参数的函数 func greet(person: String, alreadyGreeted: Bool) -> String { if alreadyGreeted { return greetAgain(person: person) } else { return greet(person: person) } } greet(person: "tim", alreadyGreeted: true) // 无返回值的函数 func greet(person: String) { print("hello, \(person)!") } // 多返回值的函数 func minMax(array: [Int]) -> (min: Int, max: Int) { var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } // 可选元组返回类型 func minMax(array: [Int]) -> (min: Int, max: Int)? { if array.isEmpty {return nil} var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } // 隐式返回的函数 // 如果整个函数体是一个单一表达式,那么函数可以隐式返回这个表达式 func greeting(person: String) -> String { "hello " + person + "!" } print(greeting(person: "Tom"))
-
实参标签、形参名和返回值
/* 每一个函数的形式参数都包含实际参数标签和形式参数名。实际参数标签用在调用函数的时候;在调用函数的时候每一个实际参数前面都要写实际参数标签。形式参数名用在函数的实现当中。默认情况下,形式参数使用它们的形式参数名作为实际参数标签。 所有的形式参数必须有唯一的名字。尽管有可能多个形式参数拥有相同的实际参数标签,唯一的实际参数标签有助于让你的代码更加易读 */ func someFunction(firstParameterName: Int, secondParameterName: Int) { } someFunction(firstParameterName: 1, secondParameterName: 3) 上面的