美文网首页
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中关于??运算符的探索

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

  • 探索 Swift 中的 MVC-N 模式

    探索 Swift 中的 MVC-N 模式 探索 Swift 中的 MVC-N 模式

  • swift 运算符

    Swift 基本运算符 标签(空格分隔): swift 运算符 zybuluo swift 运算符 特性 赋值运算...

  • Swift笔记二:基本运算符

    组合赋值运算符 Swift Objective-C Swift中复合赋值运算没有返回值。 元组比较大小 空合运算符...

  • Swift之自定义运算符

    1.swift允许中自定义运算符: 前置运算符(prefix)中间运算符(infix)后置运算符(postfix)...

  • 5.1 高级运算符与枚举

    除了算术运算符、逻辑运算符等基础的运算符外,Swift语言还提供了许多关于运算符的高级使用技巧。开发者甚至可以重新...

  • Swift 基本语法(二)— 运算符

    swift 运算符1.赋值运算符“=” 没有返回值, 比较运算符“==” 返回bool值。 这是swift比OC...

  • swift基础知识

    一 可选类型 二 空和运算符 ?? 三 区间运算符 ... 四 switch swift中的switch语句比...

  • Swift - 运算符重载

    一、定义 在Swift的官方文档中运算符重载叫做运算符函数(Operator Functions)。简单来讲主要实...

  • Swift编程二十八(高级运算符)

    案例代码下载 高级运算符 除了基本运算符中描述的运算符之外,Swift还提供了几个执行更复杂值操作的高级运算符。这...

网友评论

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

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