码迷,mamicode.com
首页 > 编程语言 > 详细

swift笔记-if语句

时间:2016-09-09 14:49:28      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

//1.基本使用

        let num = 23

        if num > 10 {

            print("num is big")

        }else if num < 0 {

        

            print("num is fushu")

        }else{

            print("num is mid")

        }

swift中,if后面跟的条件语句必须是boolType表达是,像在OC中的if(num)在swift中便不能使用了

2.if let的理解

        var optionalName: String? = nil

        var greeting = "Hello!"

        if let name = optionalName {

            greeting = "Hello!!!\(name)"

        }

 这段语句中的if let...,让我困惑了很久

  为什么if后面要用 let name = optionalName   而不直接用 optionName != nil来表示?

  var optionalName: String? = nil

          var greeting = "Hello!"

          if optionalName != nil {

              greeting = "Hello!!!\(name)"

          }

在stackOverflow上看到一个解释,觉得比较合理。链接http://stackoverflow.com/questions/24004443/reason-for-assigning-optional-to-new-variable-in-conditional-statement-in-swift

他的解释是:1.if-let 结构可以让你获取到一个确定的值(非nil),避免崩溃掉,因为swift是一门非常明确的语言,这样可以避免由于开发者没有考虑到所有的情况而出错的可能。2.举例如下:

var optionalName: String? {

            get {

                if checkTouchID() {

                    print("get optionalName")

                    return "John Appleseed"

                } else {

                    return nil

                }

            }

        }

        var greeting = "Hello!"

        if optionalName != nil {

            greeting = "Hello, \(optionalName)"

        }

 

在这段代码中,由于声明了optionalName的getter方法,故而在 if optionalName != nil  和 greeting = "Hello, \(optionalName)"都有调用optionalName的getter方法,也就是getter方法执行了2次,这样的话在实际开发中会有一些问题,例如getter方法是从网络获取,或者getter方法中执行支付操作,执行2次就不合理了。

所以如果换成if-let结构,就不会有这个问题了

swift笔记-if语句

标签:

原文地址:http://www.cnblogs.com/baiyeweiwu87/p/5856285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!