函数的定义与调用
func greet(person: String) -> String {
let greeting = "Hello, " + person + "!"
return greeting
}
简化版
func greetAgain(person: String) -> String {
return "Hello again, " + person + "!"
}
print(greetAgain(person: "Anna"))
// 打印“Hello again, Anna!”
无参无返回值
func test1()->Void{
print("这是一个无参无返回值的函数")
}
test1()
func test2()->(){
print("这是一个无参无返回值的函数")
}
test2()
func test3(){//最常用
print("这是一个无参无返回值的函数")
}
test3()
有参无返回值
func call(phoneNumber:String){
print("给\(phoneNumber)打电话")
}
call(phoneNumber:"10001")
无参有返回值
func getMsg()->String{
return "这是一条来自10086的信息"
}
print(getMsg())
函数类型
func addTwoInts(_ a: Int, _ b: Int) -> Int {
return a + b
}
func multiplyTwoInts(_ a: Int, _ b: Int) -> Int {
return a * b
}
addTwoInts 和 multiplyTwoInts。
注:这两个函数都接受两个 Int 值, 返回一个 Int 值。
这两个函数的类型是 (Int, Int) -> Int,可以解读为:
“这个函数类型有两个 Int 型的参数并返回一个 Int 型的值”。
使用函数类型
var mathFunction: (Int, Int) -> Int = addTwoInts
注:“定义一个叫做 mathFunction 的变量,
类型是‘一个有两个 Int 型的参数并返回一个 Int 型的值的函数’,
并让这个新变量指向 addTwoInts 函数”
调用
print("Result: \(mathFunction(2, 3))")
// Prints "Result: 5"
函数类型作为参数类型
func printMathResult(_ mathFunction: (Int, Int) -> Int, _ a: Int, _ b: Int) {
print("Result: \(mathFunction(a, b))")
}
printMathResult(addTwoInts, 3, 5)
// 打印“Result: 8”
函数类型作为返回类型
func stepForward(_ input: Int) -> Int {
return input + 1
}
func stepBackward(_ input: Int) -> Int {
return input - 1
}
例题
eg1:
//此时 Swift 可以自动推断其函数类型
var op = add //Swift可以推断出op是一个函数,函数类型是(Int, Int) -> Int
print(op(10,30))//
op = minus
print(op(10,30))//minus(10,30)
eg2:
//函数作为参数
func printResult(a:Int,b:Int,mathFunc:(Int,Int)->Int){
print(mathFunc(a,b))
}
printResult(a:10,b:20,mathFunc:add)
printResult(a:10,b:20,mathFunc:minus)
eg3:
//函数作为返回值
func getFunction(a:Int)->(Int,Int)->Int{
if a>10{
return add
}else{
return minus
}
}
print(getFunction(a:12)(10,20))
print(getFunction(a:4)(10,20))