前端之家收集整理的这篇文章主要介绍了
swift -函数、函数指针,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
//
// main.swift
// FunctionTest-04
//
import Foundation
println("函数测试!")
testFunction()
//
// FunctionTest.swift
// FunctionTest-04
//
import Foundation
//函数以func开头 表示是一个函数
//参数和参数以,//v1 表示参数:String 表示参数的类型
// -> 表示返回值 String
func testConcat(v1:String,v2:String)->String{
return "\(v1) and \(v2)";
}
//参数是0个,返回值是三个
func getInfo()->(String,String,String){
return ("欢迎","来到","百度");//是一个元祖
}
//标签是oc的优点swift把oc里面的标签拿过来了
func testConcat2(v1 :String,andValue v2 :String,andNumber v3 :Int)->String{
return"\(v1) and \(v2) and \(v3)";
}
func testFunctionInFunction()->Int
{
var y = 10;
//add是一个函数 lua脚本语言
func add(){
//var y = 1;下面这个y会选择zui
y += 5;
}
add();
return y;
}
//这是一个函数 返回值是(Int->Int)
func getFuncPointer()->(Int->Int){
func addOne(num : Int)->Int
{
return num+1;
}
//这里返回一个函数的地址
return addOne;
}
func testFunction()
{
println("开始测试函数");
let v = testConcat("hello","world");
println(" v is \(v)");
//andValue:称为一个标签
let v2 = testConcat2("百度",andValue:"百度招聘",andNumber:100);
println("v2 is \(v2)");
let(v3,v4,v5) = getInfo();
println("v3\(v3) v4\(v4) v5\(v5)");
let v6 = testFunctionInFunction();
println("v6 is\(v6)");
//函数指针
var funcPointer = getFuncPointer();
var v7 = funcPointer(199);
println("v7 is \(v7)");
//把函数地址/指针作为参数
var arr = [20,10,333,4,43,33];
var v8 = hasAnyMatch(arr,lessThanTen);
}
func hasAnyMatch(list : [Int],condition:Int -> Bool) -> Bool
{
for item in list{
if(condition(item))
{
return true;
}
}
return false;
}
func lessThanTen(number :Int)->Bool{
return number <= 10;
}