import Foundation
//函数以func 开头 表示一个函数
//参数和参数以,隔开
//v1表示参数 : String 表示参数类型
//-> 表示返回值String
func testConcat(v1:String,v2:String) -> String {
return "\(v1)and\(v2)";
}
func testConcat2(v1:String,andValue v2:String,andNumber v3:Int) ->String {
return "\(v1) and \(v2) and \(v3)"
}
func getInfo() -> (String,String,String) {
return ("ni","hao","ma");
}
func testFunctionInFunction() -> Int {
var y = 10;
//add 是一个函数 lua脚本语言
func add() {
var y = 1; //下面y会选最近作用域的变量 函数中可以嵌套函数
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("shao",andValue:"nian",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,390,3,43,33];
var v8 = hasAnyMatch(arr,lessThanTen);
println("V8 is \(v8)");
}
func lessThanTen(number:Int) -> Bool {
return number <= 10;
}
func hasAnyMatch(list:[Int],condition:Int->Bool) ->Bool {
for item in list {
if (condition(item)) {
return true;
}
}
return false;
}
//函数以func 开头 表示一个函数
//参数和参数以,隔开
//v1表示参数 : String 表示参数类型
//-> 表示返回值String
func testConcat(v1:String,v2:String) -> String {
return "\(v1)and\(v2)";
}
func testConcat2(v1:String,andValue v2:String,andNumber v3:Int) ->String {
return "\(v1) and \(v2) and \(v3)"
}
func getInfo() -> (String,String,String) {
return ("ni","hao","ma");
}
func testFunctionInFunction() -> Int {
var y = 10;
//add 是一个函数 lua脚本语言
func add() {
var y = 1; //下面y会选最近作用域的变量 函数中可以嵌套函数
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("shao",andValue:"nian",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,390,3,43,33];
var v8 = hasAnyMatch(arr,lessThanTen);
println("V8 is \(v8)");
}
func lessThanTen(number:Int) -> Bool {
return number <= 10;
}
func hasAnyMatch(list:[Int],condition:Int->Bool) ->Bool {
for item in list {
if (condition(item)) {
return true;
}
}
return false;
}