// // 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; }