前端之家收集整理的这篇文章主要介绍了
Swift的函数与函数指针、闭包Closure等相关内容介绍,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<span style="font-size:24px;">//函数
//demo1 无参数类型
func testConcat(){
println("测试函数");
}
testConcat()//调用demo1
//demo2 多参数,一个返回值
/*
函数以func开头,表示一个函数
v1表示参数,String参数类型
->返回值类型String
*/
func testConcats(v1:String,v2:String) ->String{
return "\(v1) and \(v2)";
}
//函数参数含有标签
func testConcatandMark(v1:String,AndValue v2:String,AndNumber v3:String)->String{
return "\(v1),\(v2),\(v3)"
}
//测试函数
func testFunction(){
let v = testConcats("hello","world");
println(v);
let v2 = testConcatandMark("david",AndValue: "dream",AndNumber: "good");
println(v2)
}
testFunction();
//函数返回多值
func getInfo()->(String,String,Int){
return ("david","dream",100);
}
let (v1,v2,v3)=getInfo();
println("v1=\(v1),v2=\(v2),v3=\(v3)");
//函数嵌套函数
func testFunctionInFunction()->Int{
var y = 10;
func add(){
y+=5;
}
add();
return y;
}
let v6 = testFunctionInFunction();
//*******************************
//函数指针 *****五星难度
/*
返回值是(Int->Int),是个函数地址
第一个int是参数类型,第二个int是返回值
*/
func getFuncPointer()->(Int->Int) {
func addOne(num:Int)->Int{
return num+1;
}
return addOne;//返回一个函数 地址
}
var funPointer = getFuncPointer();
//funPointer是个函数指针
var v7 = funPointer(100);//函数的形式调用
func get()->(Int->String){
func post(count:Int)->String{
if count>50{
return "success";
}else{
return "Failed"
}
}
return post;
}
let v8 = get();//v8拿到的是get()函数的地址
let v9 = v8(58);//v9拿到的是get函数的返回值
//函数指针/地址作为参数,函数作为参数传给函数,函数的传递</span>
<span style="font-size:24px;">
</span>
<span style="font-size:24px;">//闭包是难点,闭包的作用主要是函数与函数之间的沟通,有点像Block</span>
<span style="font-size:24px;"></span><pre name="code" class="objc">//(num:Int)->Bool闭包参数类型
func hasColsureMatch(arr:Int[],value:Int,cb:(num:Int)->Bool){
for item in arr{
if cb(item){
return true;
}
}
return false;
}
var ar = [20,9.100,34,89,39];
var v1 = hasClosureMatch(arr,40,{
(num:Int) -> Bool in
return num >= 40;
});
println("v1 is \(v1)");
原文链接:https://www.f2er.com/swift/326996.html