标签:
//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结构,就不会有这个问题了
标签:
原文地址:http://www.cnblogs.com/baiyeweiwu87/p/5856285.html