swift的函数在swift2中的使用改变了不少
/***param: personName 參数*returns: String为返回值*/func sayHello(personName: String) -> String { return "Hello " + personName;}
/*swift2中函数的调用必需要使用标签或者别名,没有别名第一个标签不带*/func add(a: Int, b: Int) -> Int { return a + b;}print(add(1, b:2));
/*假设使用了别名,函数调用的时候必须使用别名*/func add(num1 a: Int, b: Int) -> Int { return a + b;}print(add(num1: 1, b:2));
返回多个值
/*返回多个值,也就是返回一个元组*/var nums = [1, 2, 3, 4, 5]func minMax(array: [Int]) -> (min: Int, max: Int) { var minNum = array[0]; var maxNum = array[0]; for num in array { if num < minNum { minNum = num } else if num > maxNum { maxNum = num } } return (minNum, maxNum);}print(minMax(nums).max);print(minMax(nums).min);
返回可选的元组
var nums = [1, 2, 3, 4, 5]func minMax(array: [Int]) -> (min: Int, max: Int)? { if array.isEmpty { return nil; } var minNum = array[0]; var maxNum = array[0]; for num in array { if num < minNum { minNum = num } else if num > maxNum { maxNum = num } } return (minNum, maxNum);}print(minMax(nums)!.max);print(minMax(nums)!.min);
默认參数
func numFun(num: Int = 22) { print(num);}numFun();//输出22
可变參数
func numAdd(nums: Int...) { var sum = 0; for num in nums { sum += num; } print(sum);}numAdd(1, 2, 3);
不用标签调用函数的情况
func addNum(_ a:Int, _ b: Int) { a + b;}addNum(a, b);
变量參数
函数參数默觉得常量,函数内部不能改变參数的值
要想在函数内部改变參数的值。就要使用变量作为參数func swapNum(var a:Int, var b: Int) { var temp = a; a = b; b = temp;}
in-out參数
函数默认是使用拷贝传递函数的
使用in-out修饰參数表示參数是使用指针传递函数func swapNum(inout a:Int, inout b: Int) { let temp = a; a = b; b = temp;}var a = 1;var b = 2;swapNum(&a, b: &b);print("a is \(a), b is \(b)");
函数类型
func add(a: Int, b: Int) -> Int { return a + b;}print(add( 1, b:2));/*声明一个变量,后面是函数类型*/var addNum: (Int, Int) -> Int = add;print(addNum(2, 3));
函数类型作为參数
func result(numFun: (Int, Int) -> Int, a: Int, b: Int) { print(numFun(a, b));}result(addNum, a: 6, b: 7);
函数类型作为返回值
/*返回一个函数*/func chooseFunc() -> (Int) -> Int {}
嵌套函数
func addNum(a: Int, b: Int) { func printNum() { print(22); } printNum(); print(a + b);}var a = 1;var b = 3;addNum(a, b:b);