2024-11-25
closure: 匿名函数或没有名称的函数。 用处:让代码变得简洁(但不易懂)。
格式:
不需要func+name
,花括号{}提前,中间加入一个in
即可。
{(n1: Int, n2: Int) -> Int in
return n1 + n2
}
示例代码:
func calculator (n1: Int, n2: Int, operation:(Int, Int) -> Int) -> Int {
return operation(n1,n2)
}
func add (no1: Int, no2: Int) -> Int{
return no1 + no2
}
//使用正常function
calculator(n1: 2, n2: 3, operation: add)
//使用closure
//calculator(n1: 2, n2: 3, operation: {(no1: Int, no2: Int) -> Int in
// return no1 * no2
//})
//closure简易版
//利用类型推断,不用输入Int
//返回值、return可以去掉,也是自动推断
// $0代表第一个参数,$1代表第二个参数
// 可以省略operation:
let result = calculator(n1: 2, n2: 3) { $0 * $1 }
print(result)
//应用
let array = [6,2,3,9,4,1]
/*
要求:
给每个元素都+1,可以用for loop这个复杂方法,也可以用closure
*/
let addOne = array.map() {$0 + 1}
print(addOne)
//将所有元素转换为String
let newArray = array.map {"\($0)"}
print(newArray)
如果只有一个参数,参数还是一个function,function后面不带括号:
alert.addTextField { (alertTextField) in
alertTextField.placeholder = "Create New Item"
textField = alertTextField
}