swift5(6)函数
2020-02-26 本文已影响0人
C_G__
感谢作者
https://www.jianshu.com/p/413c8113e332
// 元组返回值
if let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) {
print("min is \(bounds.min) and max is \(bounds.max)");
}
// 省略参数标签
// _
someFunction(7); //参数忽略,parameterName:7
// 默认参数值
//调用,两者皆可以,
parameterContainDefaultValue(defaulValue1: 12, defaultValue2: 23);
//因为某个参数值定义了默认值,因而多出下面的方法。
parameterContainDefaultValue(defaulValue1: 12);
// 可变参数个数
//调用
let average = arithmeticMean(1,2,3,4);
print("平均数\(average)");//!< 平均数2.5
// 输入输出参数inout
var aaaa = 6;
var bbbb = 7;
changeTwoIntNumbers(&aaaa, &bbbb);
print("bbbb:\(bbbb),aaaa:\(aaaa)");
//!< b:6,a:7
// 使用函数类型
var mathFunction:(Int,Int)->Int = addTwoInts;
let addValue = mathFunction(a,b);
mathFunction = subTwoInts(_:_:);
let subValue = mathFunction(a,b);
print(subValue);//!< 1
print(addValue);//!< 13
// 函数类型作为参数类型
mathResultFunction(mathFunction, a, b);
//!< 函数计算的结果为:1
mathResultFunction(addTwoInts(_:_:), a, b);
//!< 函数计算的结果为:13
// 定义返回值类型为函数类型的函数
//简单使用一下
var currentValue = 3;
//! tempChooseStepFunction:stepBackward
let tempChooseStepFunction = chooseStepFunction(backward: currentValue > 0);
print("currentValue:\(currentValue)");
while currentValue > 0 {
currentValue = tempChooseStepFunction(currentValue);
print("currentValue:\(currentValue)");
}//!<
//定义
// 元组返回值
func minMax(array: [Int]) -> (min: Int, max: Int)? {
if array.isEmpty { return nil; }
var currentMin = array[0];
var currentMax = array[0];
for value in array[1..<array.count] {
if value < currentMin {
currentMin = value;
} else if value > currentMax {
currentMax = value;
}
}
return (currentMin, currentMax);
}
// 省略参数标签
func someFunction(_ parameterName: Int) {
}
// 默认参数值
func parameterContainDefaultValue(defaulValue1:Int,defaultValue2:Int=12) {
}
// 可变参数数量
func arithmeticMean(_ numbers: Double...) -> Double {
var total: Double = 0;
for number in numbers {
//!< numbers 作为[Double]类型的数组存在
total += number;
}
return total / Double(numbers.count);
}
//根据内存地址交换两个整型数值
func changeTwoIntNumbers(_ a:inout Int,_ b:inout Int) {
let temp = a;
a = b;
b = temp;
}
// 使用函数类型
//定义的函数
func addTwoInts(_ a: Int, _ b: Int) -> Int {
return a + b;
}
func subTwoInts(_ a:Int,_ b:Int)-> Int {
return a - b;
}
// 函数类型作为参数类型
func mathResultFunction(_ mathCalculate:(Int,Int)->Int, _ a:Int, _ b:Int) {
print("函数计算的结果为:\(mathCalculate(a,b))");
}
// 函数类型作为返回类型
func stepForward(_ input: Int) -> Int {
return input + 1;
}
func stepBackward(_ input: Int) -> Int {
return input - 1;
}
// 定义返回值类型为函数类型的函数
func chooseStepFunction(backward: Bool) -> (Int) -> Int {
return backward ? stepBackward : stepForward;
}
// 嵌套函数
func chooseStepFunction2(backward: Bool) -> (Int) -> Int {
func stepBackward(_ input: Int) -> Int {
return input - 1;
}
func stepForward(input: Int) -> Int {
return input + 1;
}
return backward ? stepBackward : stepForward;
}