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

上一篇下一篇

猜你喜欢

热点阅读