美文网首页
Swift学习笔记(01)——Optional(可选型)

Swift学习笔记(01)——Optional(可选型)

作者: 兰帕德 | 来源:发表于2017-04-27 14:16 被阅读0次

可选(Optional)类型是Swift的显著特点之一,用于处理值缺失的情况,提高安全性。Optional表示 “这里有一个值,并且等于XXX” 或者 “这里没有值”。Swift定义“?”为命名类型Optional的缩写。

//Optional的定义
var optionalString: String? = "Hello, World!"
var optionalString: Optional<String> = "Hello, World!"

String 和 String? 不是一个类型,String?是String的可选类型,既可存放String,又可存放String?。

var age: Int = nil
//直接赋值为nil是报错的

Swift中nil严格区分于其他类,Nil是一个单独的类。Optional可以让我们在具体的类和nil之间进行选择,此为可选型名字的由来。

//Optional的使用
var Str:String? = "World"
print("Hello, " + str)
//由于errorCode可能为nil  所以此处报错
强制解包(forced unwrapping)
//利用符号“!”进行强制解包
var str: String? = "World!"
"Hello, " + str! 
//强制解包需要确定可选类型包含值,否则会报错

if str != nil {
    print("Hello " + str!)
}
else {
    print("str 值为 nil")
}
自动解包

在声明Optional变量的时候,使用“!”替换“?”,这样可选型变量在使用时,就不需要再添加“!”来获取值,它会自动进行解析。示例如下:

var str: String! = "Hello, World!"
if str != nil {
    print(str)
}
else {
    print("str 值为 nil")
}
可选绑定(optional binding)

可选绑定先判断可选类型是否包含值,如果包含值,就把值赋给一个临时常量(if let)或变量(if var)。示例如下:

//if let 解包(if var 也可,通常使用if let)
var str: String? = "World"
if let unwrapedStr = str {
    print("Hello, " + unwrapedStr)
}
else {
}

简便起见,可以使用相同的变量名,不会造成冲突。例如:

var str: String? = "World!"
if let str = str {
    print("Hello, " + str)
}
else {
}
Optional Chaining
var str: String? = "Hello, World!"
var upperStr = str?.uppercased()
//此处 ? 是尝试解包,upperStr类型仍为String? ,即使str的值是nil也不会报错。
if let str = str?.uppercased(){
    print(str)
}
Nil Coalesce
var str: String? = "Hello, World!"
let str2 : String
//此处没有赋初值,若中间有操作,则会报错
if let str = str {
    str2 = str
}
else{
    str = "nil"
}
//三目预算符写法
let str2 = str == nil ? "str值为nil" : str
//与上面的三目运算符逻辑等价  但要简洁
let str2 = str ?? "str值为nil" 

相关文章

  • Swift学习笔记(01)——Optional(可选型)

    可选(Optional)类型是Swift的显著特点之一,用于处理值缺失的情况,提高安全性。Optional表示 ...

  • Swift可选型(optional)各种用法示例

    Swift可选型(optional)各种用法示例原文:optionals the optionals if let...

  • swift学习:可选型(Optional)

    对于刚接触swift的同学来说,可选型是一个比较陌生的概念。下面对可选型做一个简单清晰的分析 可选型其实是一个枚举...

  • Swift 学习之可选型(Optional)

    最近学习Swift,也在Playground上敲了些代码,虽然说Swift类似于Java,可从Java转过来后我还...

  • swift学习笔记④

    Swift学习笔记 - 文集 语法篇 一、可选类型 Optional Swift 中,常量和变量是不允许赋予 ni...

  • Swift Optional(可选型)

    出自:huazhume 前言 在众多计算机语言编程中,往往在程序执行过程中会遇要变量为nil的时候,有时候程序对这...

  • Swift学习笔记 | Optional

    Optional### Swift中的Optional作为一种类型,既可以存储一个值,也可以为空(也就是swift...

  • swift-可选型(Optional)

    可选型作为swift语言中一大亮点,也是非常重要的一个概念,为此我们要学好swift,就要把可选型学好。 什么是可...

  • swift学习笔记之Optional

    前言 很早之前我就学习了一次swift,不过都是零零碎碎的,有些地方理解不够透彻,再加上公司项目暂时没有迁移到sw...

  • Swift学习笔记之Optional

    前言 最近要做一个Swift开发的app,之前一直在用Objective-C做开发,其实早就想试试Swift开发了...

网友评论

      本文标题:Swift学习笔记(01)——Optional(可选型)

      本文链接:https://www.haomeiwen.com/subject/crqizttx.html