美文网首页
Swift学习笔记之可选类型

Swift学习笔记之可选类型

作者: brave_wu | 来源:发表于2019-06-26 11:26 被阅读0次

和OC相比

可选类型是一个从OC走向Swift的第一个吸引目光的地方,OC是弱类型语言,所以没有可选类型的概念。

可选类型的解绑

首先看声明可选类型:

var optionalStr:String?

Swift中任何类型都可以紧跟一个?变为可选类型
声明后我们赋值打印试试:

optionalStr = "Hello,Swift"

print(optionalStr)

编译器报警告,然后打出的结果是"Optional("Hello,Swift")"而不是我们预期的"Hello,Swift"。

下面有列举几种解除警告的方法:
1.空合运算

print(optionalStr ?? "默认值")

使用空合运算符??为可选类型指定一个默认值,保证它不为空,就不会有警告了。
2.强制解析

print(optionalStr!)

强行告诉编译器,它有值不为空。

  1. 转换类型
print(optionalStr as Any)

as是表示转换成它对应的类型,转换成一个可以为空的类型Any,自然不会警告了。
4.自动解析
声明的时候直接用!

var optionalStr:String!

optionalStr依然是可选类型,只是当我们使用它的时候,它自动解析为String类型了。
5.可选绑定

if let tempStr = optionalStr {
    print(tempStr)
}else{
    print("为nil")
}

if let 指的是如果optionalStr有值就给tempStr,为nil就else;

可选类型的应用

知道这么多解绑方法之后,相信你已经迫不及待想用用看了。接下来列举场景的几个应用场景:
1.返回值类型

func returnoptionalValue(value: Bool) -> String? { // 返回类型为可选String类型
    if value {
        return "返回类型是可选类型值"
    } else {
        return nil
    }
}
func returnoptionalFunc(value: Bool) -> (() -> (Void))? { // 返回类型为可选类型的闭包
    if value {
        return { () in
            print("返回类型是可选类型闭包")
        }
    } else {
        return nil
    }
}

不多解释,试试怎么解绑。
2.作为属性

//类
class OptionalClass {
    var aValue: Int = 0
    var optionaValue: String? //默认值为nil
}
//结构体
struct OptionalStruct {
    var aValue: Int
    var optionalValue: String? //默认值为nil
}

这样做的话构造方法中可以不对optionalValue属性初始化
3.可失败构造器

class OptionalStructInit {
    let aValue: String
    init?(aValue: String) {
        if aValue.isEmpty { return nil }
        self.aValue = aValue
    }
}

class OptionalStructInit实例化后可能为nil(作死?)
4.try

var optionalStr = try? aFunction()

try?会将Error转换为可选值,当调用aFunction时,如果aFunction抛出错误,程序不会发崩溃,而返回一个nil,如果没有抛出错误则返回可选值。
使用try!可以强行崩溃(作死?)

以上就是Swift可选类型的学习记录,欢错指。

相关文章

  • swift 学习笔记之可选类型

    可选类型(可以有值, 也可以没有值) 在OC中我们可以给一个对象类型变量赋值为nil或者一个对象, 而在Swift...

  • Swift学习笔记之可选类型

    和OC相比 可选类型是一个从OC走向Swift的第一个吸引目光的地方,OC是弱类型语言,所以没有可选类型的概念。 ...

  • swift学习笔记④

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

  • Swift学习之可选类型

    一、定义可选类型 二、可选赋值 三、可选取值 1、强制展开在可选的名字后面加一个感叹号 ( ! ) 来获取值,感叹...

  • Swift:(五)可选类型

    Swift 可选(Optionals)类型 Swift 的可选(Optional)类型,用于处理值缺失的情况。可选...

  • Swift:基础(五)可选类型

    Swift 可选(Optionals)类型 Swift 的可选(Optional)类型,用于处理值缺失的情况。可选...

  • Swift 可选类型Optional

    Swift 可选类型Optional [TOC] 前言 本将以Swift中的可选类型为入口,介绍: 可选类型的底层...

  • Swift 可选(Optionals)类型

    Swift 可选(Optionals)类型Swift 的可选(Optional)类型,用于处理值缺失的情况。可选表...

  • Swift学习笔记(元组/可选类型)

    元组 元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。 元组的使用场景...

  • Swift语法笔记之可选类型

    1.可选类型 可选类型表示变量可以有值, 也可以没有值 C 和 Objective-C 中并没有可选类型这个概念 ...

网友评论

      本文标题:Swift学习笔记之可选类型

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