美文网首页
swift5(6)函数

swift5(6)函数

作者: C_G__ | 来源:发表于2020-02-26 14:41 被阅读0次

    感谢作者
    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;
        }
    
    

    相关文章

      网友评论

          本文标题:swift5(6)函数

          本文链接:https://www.haomeiwen.com/subject/jzrvchtx.html