首页 > 代码库 > swift笔记-if语句

swift笔记-if语句

//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语句