美文网首页
swift中关于??运算符的探索

swift中关于??运算符的探索

作者: 我的月亮你的心 | 来源:发表于2017-03-04 13:19 被阅读10次

    1.??运算符是一个双目运算符,系统对这个运算符的定义如下:

    func ??(optional: T?, defaultValue: @autoclosure () -> T) -> T

    我们自己可以手动实现如下:

    infix operator +?

    func +?(op:T?,handler:@autoclosure()->T)->T{   

          guard let p = op else {        

          return handler();   

     }    

    infix operator -?

    func -?(op:T?,handler:()->T)->T{

           guard let p = op else {

            return handler();

        }

          return p;

    }

    测试:

    let str = "welcom";

    let str1:String? = nil

    let handler:(()->String) = {

    ()->String in

    return "1111";

    }

    let s = str +? "yyyy"

    let s1 = str -? handler

    let s2 = str1 +? "yyyy"

    let s3 = str1 -? handler

    print((s,s1,s2,s3));

    结果如下:("welcom", "welcom", "yyyy", "1111")

    系统的??双目运算符采用了自动闭包,通过我对+?,-?运算符的重载,可以看出。

    第一次写,写的不好望见谅

    相关文章

      网友评论

          本文标题:swift中关于??运算符的探索

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