函数
最简单的函数,没有参数和返回值。
func hello(){
print("Hello")
}
// 这个也可以写成返回void类型
func hello1() -> Void{
print("hello1")
}
hello()
hello1()
带参数和返回值的函数
// 带参数
func hello(to:String){
print("hello ", to)
}
hello(to: "张三")
// 带返回值
func hello1(to:String) -> String {
return "hello " + to
}
hello1(to: "李四")
省略return
// 如果只有一句代码,可以省略return
func hello(to:String) -> String {
"hello " + to
}
let res = hello(to: "李四")
print(res)
参数标签
// 参数标签
func myAdd(first a:Int, second b:Int){
print(a + b)
}
myAdd(first: 10, second: 20)
// 也可以下划线
func myAdd1(_ a:Int, b:Int) {
print(a + b)
}
myAdd1(10, b: 20)
不定长参数
不定长参数的后面的参数不能用下划线
func hello(to:String... ,begin:String = "welecome") {
var content = begin
for i in to{
content += i
}
print(content)
}
hello(to: "小王", "小张")
hello(to: "李白","杜甫", begin: "欢迎")
inout
func swap(a:inout Int, b:inout Int){
let temp = a
a = b
b = temp
}
var a = 10
var b = 20
swap(a: &a, b: &b)
print(a, b)
闭包
// 闭包的使用
/*
{ (参数列表) -> (返回值) in
闭包的代码
}
*/
let a = { (a:Int , b:Int) -> Int in
a + b
}
let b = { (a:Int, b:Int) -> Int in
a * b
}
var count = 1000
let c = { (a:Int) -> Int in
count += 1
return count
}
print(a(10,20))
print(b(10,20))
print(c(0))
print(c(0))
尾随闭包
let a = { (a:Int , b:Int) -> Int in
a + b
}
func hello(a: (Int, Int) -> Int) {
}
//尾随闭包,最后一个参数是一个闭包,可以直接写大括号里面
hello { a, b in
return a + b
}