if语句和optional

作者: Hollylord | 来源:发表于2015-12-15 14:45 被阅读328次

因为当这个if和optional一起用的时候,很容易混淆,这里题主好好做一个详细的解释。

强制解包

在可选类型的后面加个感叹号!,就可以把可选类型的值取出来,赋值给具体类型
下面的写法是正确的

var num :Int? =10
var numValue :Int =num!
// 将num中的值取出来,赋值给numValue

感叹号!的意思是告诉编译器:我确定可选类型里面有值,可以将值取出来了。当然啦,如果为nil,就崩溃咯。

隐式解包

被声明为隐式解包的可选类型不用进行强制解包能够自动解包:自动把可选类型的值取出来赋给具体类型

  • 如何声明一个隐式解包的可选类型
    将 问号?改为 感叹号!即可
var num :Int! =20
var numValue :Int =num // 自动解包,不用再使用! 进行强制解包
// num是被声明为隐式解包的可选类型Int!
  • 隐式解包的原理和应用
    隐式解包的原理
    相当于告诉编译器:这个可选类型的值一直都存在,绝对能取出里面的值
    所以取值时可以不用加感叹号!,能够自动解包

选择绑定

  • 选择绑定的作用
    用来确定一个可选类型的值是否存在
    如果值存在,把该值赋给一个临时常量\变量
    如果值不存在,就不创建任何临时常量\变量
  • 选择绑定的应用
if let num ="156".toInt() {
    println("num的值存在,是\(num)")
} else {
   println("num的值不存在")
}

如果"156".toInt()的值存在
就把值赋给临时常量num,执行第1 ~ 3行的大括号之间的代码
如果"156".toInt()的值不存在
就不创建临时常量num,执行第3 ~ 5行的大括号之间的代码
注意:
这里的num是Int类型,不是Int?类型
num的作用域是第13行的大括号之间,不能用在第35行的大括号之间

相关文章

  • if语句和optional

    因为当这个if和optional一起用的时候,很容易混淆,这里题主好好做一个详细的解释。 强制解包 在可选类型的后...

  • Java 8 Optional使用上的坑

    试问以下语句有问题吗? Optional stringOptional = Optional.of(string...

  • [Neo4J] where Cypher查询语言(CQL) 语法

    where会对match或者optional match语句添加约束, 也可以与with语句一起使用来过滤结果

  • Swfi基础1

    Swift不要求在每行语句的结尾使用分号(;),但当你在同一行书写多条语句时,必须用分号隔开 : Optional...

  • swift-控制流

    if语句 不需要将正在检查的表达式放到括号内。 所有if语句的主体都要放在大括号内。 判断optional类型中是...

  • ?、 !和as

    ?和! swift中有一种类型Optional,这个类型里有两个值optional.None和optional.S...

  • Guava工具集

    使用和避免null 1、创建Optional对象 1)创建一个空的Optional:Optional.empty(...

  • swift之map和flatMap

    一、Optional的map和flatMap Optional 的定义 map 和 flatMap的共性 map和...

  • Swift -08:Optional,Equatable和访问控

    1.Optional源码分析和使用 1.1.Optional源码 Optional的本质是enum,所以下面的三种...

  • Protocol协议

    1.@required和@optional关键字 @required:这个方法必须要实现 @optional:这个...

网友评论

    本文标题:if语句和optional

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