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中的用法和含义是相同的。

上一篇 下一篇

猜你喜欢

热点阅读