Swift_3.0_初级篇07_可选项的判断

demo()

 func demo () -> () {
        let x: Int? = 10
        let y: Int?  = 100
        print(x! + y!) //强行解包有风险 //输出 110
    }
方法的创建
方法

demo0(x: 10, y: 120)

func demo0 (x: Int , y:Int) -> () {
        print(x + y) //输出 130
    }

demo1(x: 10, y: 120)

 func demo1 (x: Int? , y:Int?) -> () {
        //强行解包有风险
        print(x! + y!) //输出 130
    }

demo2(x: 10, y: nil) //如果传的参数 是 nil 要小心了

 func demo2 (x: Int? , y:Int?) -> () {
        //使用 if 判断  但是 会让代码很丑陋,凌乱
        if x != nil &&  y != nil  {
               print(x! + y!)
        }else {
           print("x 或者 y 为 nil")
        }
    }

为了简化 demo2 so demo3诞生了
demo3(x: 10, y: nil)

    func demo3 (x: Int? , y:Int?) -> () {
        print((x ?? 0) + ( y ?? 0))  //  输出 10
        /*
         ?? 是一个简单地 三目
         - 如果有值 使用值
         - 如果没有值 使用 ?? 后面的的值替代
         */
       }

补充:

        let name: String? = "啊啊"
        print(name! + "你好") //输出  啊啊你好
        
        /*
        let name1: String? = nil
        print(name1! + "你好")//unexpectedly found nil while unwrapping an Optional value
        */
 
        let name2: String? = "啊啊"
        print((name2 ?? "") + "你好") //输出 啊啊你好
        
        let name3: String? = nil
        print((name3 ?? "") + "你好") //输出  你好
        
        let name4: String? = "老王"
        print(name4 ?? "" + "你好") // ?? 的优先级很低 只会输出 老王 
        // 不知道你看懂没上一个 它的原理其实是这样的
        //print((name4) ?? ("" + "你好")) //最后在执行 ??
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,865评论 0 6
  • 1.Swift中let和var的基本用法 2.在swift中不存在基本数据类型,都是结构体,不同类型的数据直接,不...
    思考的快与慢阅读 408评论 0 2
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 PS:转载请注明出处作者:TigerChain地址:http...
    TigerChain阅读 639评论 0 3
  • 1.Swift中函数的使用 函数的定义 外部参数 _的使用 常见的 "_" 在for循环中 函数的默认值 无返回值...
    思考的快与慢阅读 510评论 0 2
  • 晚上,妈妈给我看看新补习班老师的头像,据她说很漂亮,我很好奇地凑了过去。 手指刚刚触到,点开了头像,就在那一秒不到...
    墨书竹阅读 405评论 0 0