Swift 中语法糖和??
2019-02-21 本文已影响8人
90后的晨仔
需要练习的小伙伴可以去苹果的官方去敲一遍:
https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html
一、语法糖if let 理解
代码片段一:
var optionalName: String? = "你好!"
var greeting = "Hello!"
if let name = optionalName {
greeting = "测试, \(name)"
print(greeting)
}
输出内容:测试, 你好!
代码片段二:
var optionalName: String? = nil
var greeting = "Hello!"
if let name = optionalName {
greeting = "测试, \(name)"
print(greeting)
}else{
greeting = "玩一玩"
print(greeting)
}
输出内容:玩一玩!
分析:语法糖:if let的搭配使用相精简了代码并切可读性也不差,从代码上我们可以看出如果可选值为nil条件语句就会跳过括号中的代码,否则的话,就会去解包可选值并将其配给常量let,这使得在代码块内可用的展开值可用。
二、??(空合运算符)
在查看苹果官方文档时候看见??,第一反应怎么这家伙怎么这么想三目运算符呢,问了下度娘感觉这篇文章解释的真好。https://www.jianshu.com/p/3ede1ec31351
let nickName: String? = nil
let fullName: String = "John Appleseed"
let informalGreeting = "Hi \(nickName ?? fullName)"
分析:其实??(空合运算符)就做了一件很简单的事情,以上边代码为例,它其实就是对
nickName
做了一个判断,如果判断nickName
为nil的话就取默认的fullName
的值,否则nickName
不为nil,则将nickName
解包后返回。
二、hasSuffix和hasPrefix的区别
hasSuffix(string)返回一个布尔值表示字符串是否以指定的后缀结束。
如果一直返回true 如果不一致返回false
hasPrefix(string)返回一个布尔值表示字符串是否以指定的前缀开始。
如果一直返回true 如果不一致返回false
其实swfit中【hasSuffix和hasPrefix】与oc中的用法和含义是相同的。