//传入一个名字 打印并将其返回
func printName(name:String) -> String {
print(name)
return name
}
//进行函数的调用
printName("HS")
func onePuseTwo()->Int {
return 1+2
}
onePuseTwo()
同样也可以创建没有返回值的函数:
func sayHello(){
print("Hello")
}
sayHello()
func tuples()->(Int,String){
return (1,"1")
}
tuples()
func func1(param:Int)->Int? {
guard(param>0)else{
return nil
}
return param
}
func1(0)
func1(1)
func func1(count param:Int ,count2 param2:Int)->Int? {
//内部依然使用param
guard(param>0)else{
return nil
}
return param
}
//外部调用使用count
func1(count: 0,count2: 0)
func1(count: 1,count2: 1)
func func2(param:Int,param2:Int,param3:Int) {
}
//有外部名称
func2(0, param2: 0, param3: 0)
func func3(param:Int,_ param2:Int,_ param3:Int) {
}
//没有外部名称
func3(0, 0, 0)
func func4(param:Int=1,param2:Int=2,param3:Int) {
print(param,param2,param3)
}
func4(3,param3:3)
func func5(param:Int...) {
for index in param {
print(index)
}
}
func5(1,2,3,4)
func func6(inout param:Int) {
param = 10
}
var count = 1
//实际上传入的是参数地址
func6(&count)
print(count)
func func7(a:Int,_ b:Int)->Int{
return a+b
}
var addFunc:(Int,Int)->Int = func7
addFunc(1,2)
func func7(a:Int,_ b:Int)->Int{
return a+b
}
var addFunc:(Int,Int)->Int = func7
addFunc(1,2)
func func8(param:Int,param2:Int,param3:(Int,Int)->Int) -> Int {
return param3(param,param2)
}
//传入函数
func8(1, param2: 2, param3: addFunc)
//闭包的方式
func8(2, param2: 2, param3:{ (a:Int,b:Int) -> Int in
return a*b
})
func func9()->(Int)->Int{
//Swift支持嵌套函数
func tmp(a:Int)->Int{
return a*a
}
return tmp
}
var myFunc = func9()
myFunc(3)
var array = [3,21,5,2,64]
func func1(param1:Int,param2:Int) -> Bool {
return param1>param2
}
//通过传入函数的方式
//array = [64,21,5,3,2]
array = array.sort(func1)
//通过闭包的方式
//array = [2,3,5,21,64]
array = array.sort({(param:Int,param2:Int)->Bool in
return param<param2
})
//将闭包的参数类型和返回值都省略
array = array.sort({(p1,p2) in return p1>p2})
array = array.sort({(p1,p2) in p1>p2})
array = array.sort({$0<$1})
array = array.sort(>)
//闭包结尾
func func2(param1:Int,param2:()->Void)->Void{
param2()
print("调用了func2函数")
}
func2(0){
print("闭包中的内容")
}
func func3(param:()->Void)->Void{
param()
print("调用了func3函数")
}
func3{
print("闭包中的内容")
}
func func3(@noescape param:()->Void)->Void{
param()
print("调用了func3函数")
}
func3{
print("闭包中的内容")
}
//自动闭包演示
var list = [1,2,3,4,5,6]
//创建一个显式闭包
let closures = {
list.removeFirst()
list.append(7)
}
//将打印[1,2,3,4,5,6]
print(list)
//执行闭包
closures()
//将打印[2,3,4,5,6,7]
print(list)
func func4(closure:()->Void) -> Void {
//执行显式的闭包
closures()
}
func func5(@autoclosure auto:()->Void) -> Void {
//执行自动闭包
auto()
}
//显式闭包 需要大括号
func4(closures)
//将打印[3,4,5,6,7,7]
print(list)
//将表达式自动生成闭包
func5(list.append(8))
//将打印[3,4,5,6,7,7,8]
print(list)
func func5(@autoclosure(escaping) auto:()->Void) -> Void {
//执行自动闭包
auto()
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有