函数
定义
使用 func
关键字声明函数
swift
func fun1() {
print("输出")
}
fun1()
func fun2(name: String) {
print("输出", name)
}
fun2(name: "张三")
func fun3(name: String) -> String {
return name + "你好"
}
print(fun3(name: "李四"))
func fun4(name: String, age: Int) -> (name: String, age: Int) {
return (name + "你好", age + 12)
}
let (n, a) = fun4(name: "张三", age: 22)
print(n, a) // 张三你好 34
参数别名
提供形参的函数名,只对外部访问
下面例子中,外部参数只能叫 cname
,函数内部使用参数只能使用 name
swift
func fun(cname name: String) {
print("输出", name)
}
fun(cname: "张三")
如果想要去除参数名,可以使用 _
来代替
swift
func fun(_ num1: Int, _ num2: Int) {
print(num1 + num2)
}
fun(1, 2)
多个参数
传递多个参数使用 ...
收集成为一个数组
swift
func fun(_ num: Int...) -> Int{
// print(num1)
var res = 0
for i in num {
res += i
}
return res
}
var r = fun(1, 2, 3, 4, 5, 6)
print(r) // 21
参数默认值
函数参数可以设置默认值
swift
func fun(num: Int = 10) -> Void{
print(num + 2)
}
fun(num: 12) // 14
修改函数参数
函数传入的参数默认是使用 let
关键字声明的,函数内部是不能修改参数的,如果希望修改参数,则需要使用 inout
关键字修饰参数,并且在传递参数的时候使用 &
修饰
swift
func fun(num: inout Int) {
num += 1
}
var a = 10
fun(num: &a)
print(a) // 11
闭包
闭包可以使用变量接受然后调用,类似 js 中的函数声明
swift
let fn = {
print("hello")
}
fn()
闭包传递参数,参数名 + in
关键字分隔
swift
let fn2 = {(name: String) in
print("你好\(name)")
}
fn2("张三")
闭包返回值可以省略 return 关键字
swift
let fn3 = {(n: Int, v: Int) -> Int in
n + v
}
let fn4 = {() -> String in
"哈哈哈"
}
print(fn3(3, 6)) // 9
print(fn4()) // 哈哈哈
高阶函数
以函数作为参数
swift
func fn4(callback: () -> Void) {
callback()
}
let run = {
print("匿名函数")
}
fn4(callback: run)
fn4 {
print("执行了")
}
函数作为返回值
swift
func fun6 () -> (Int) -> Void {
return {
print("接收到的数字是\($0)")
}
}
let c = fun6()
c(66666)