Swift5.2连载

Swift函数(6)

2020-07-09  本文已影响0人  _菩提本无树_

教程目录
与OC一样的内容不重复介绍

函数

这个没什么说的,所有的内容都在代码里面标注了,详情看下面的代码.

2020.07.09(第一更)

    /// 无参无返回值
    func funcParamNoneReturnNone() -> () {
        
    }
    /// 无参带返回值
    /// - Returns: string
    func funcParamNoneReturn() -> (String) {
        
        return "返回值";
        
    }
    /// 多参数
    func funcParamsNoneReturn(str : String,num : Int) -> () {
        
        
    }
    ///返回多个参数,使用元组,之前讲过
    func funcParamNoneReturns() -> (Int,Int) {

        return (1,2);
    }
    ///返回多个参数,还可以这样用,声明返回值的名字
    func funcParamNoneReturnOther() -> (min: Int,max: Int?) {
        
        return (1,nil);
        
    }
    ///对返回值进行可选处理
    func funcParamNoneReturnOtherOne(type: String) -> (min: Int,max: Int)? {
        if type == "1" {
            return nil;
        }else{
            return (1,2);
        }
    }
    //还有可以忽略return语句,我是不建议,所以就不写了
    
    ///参数标签label,他的作用是让函数语句表达更清晰,实际没什么作用
    func funcLabel(label data: String) -> () {
        
        
    }
    
    ///默认参数,即给形参加上默认值
    func funcDefaultData(type: String = "1") -> () {
        
        //调用这个方法时,如果type有值就没事,没值的话就会自动设置默认值"1"
        
    }
    
    ///如果参数类型一致,且多个的话可以使用可变参数,就是这个参数相当于一个数组,这个得写一下,不然容易出错
    ///注意⚠️一个函数最多只能拥有一个可变参数。
    func funcVarParams(type: String, varParam: String...) -> () {
        //varParam就是可变参数
        for item in varParam {
            print(item);
        }
    }
    
    ///将函数重新命名定义,举例如下
    func funcDefineTest() -> () {
        
        //下面的两种写法均可
        let tempFunc : (Int,Int)->(Int) = addNum;
//        let tempFunc : (Int,Int)->(Int) = addNum(_:_:);
        let num = tempFunc(1,2);
        print(num);
        
    }
    
    func addNum(_ first: Int, _ second: Int) -> Int {
        
        return first+second;
        
    }
    
    ///函数作为返回类型,定义一个返回的函数的参数及返回的类型
    func funcAsReturn(m: Int,n: Int,e: Int) ->(Int,Int,Int)->(String){
        
        //funcAsReturnTest(a:b:c:)这个返回的函数必须和funcAsReturn中定义的返回函数中的参数数量类型什么的都一致
        return funcAsReturnTest(a:b:c:);
        
    }
    func funcAsReturnTest(a: Int,b: Int,c: Int) -> String {
        
        return String(a+b+c);
        
    }
    
    ///函数作为参数,感觉有点鸡肋,在设计模式中可用,但是普通的代码中用处不大
    func funcAsParam(addNumTest: (_ first: Int,_ second: Int)->(Int)) -> (Int) {
        
        return addNumTest(2, 4);
    }
    
    ///嵌套函数,跟C又很像了
    func funcSuper() -> (){
        
        //这个方法只有在当前可以访问,private
        func funcSub() -> (Int){return 10};
        print(funcSub());
        
    }

函数相关知识更新完毕,更多精彩内容见目录本文完整代码地址

上一篇下一篇

猜你喜欢

热点阅读