文档章节

swift 可选类型

法斗斗
 法斗斗
发布于 2016/03/03 10:35
字数 397
阅读 11
收藏 0
点赞 1
评论 0
可选类型:
我们先看看如下代码:
var n1: Int = 10
n1 = nil //编译错误

let str: String = nil //编译错误
Int和String类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!),修改前文示例代码:
var n1: Int? = 10
n1 = nil

let str: String! = nil
Int?和String!都是原有类型Int和String可选类型,它们可以接受nil。

可选类型值拆包
在可选类型的问号(?)或感叹号(!)究竟有什么区别呢?这与可选类型的“拆包”(unwrapping)有关,拆包是将可选类型变成普通类型,如果我们直接打印非空的可选类型值,代码如下:
var n1: Int? = 10
print(n1)
输出的结果是Optional(10),而非10。所以试图计算表达式n1 + 100会发生编译错误,代码如下:
var n1: Int? = 10
print(n1 + 100) //发生编译错误
需要对可选类型值进行“拆包”是必要地。
“拆包”分为显示拆包和隐性拆包。
使用问号(?)声明的可选类型,在拆包时需要使用感叹号(!),这种拆包方式称为“显式拆包”;
使用感叹号(!)声明的可选类型,在拆包时可以不使用感叹号(!),这种表示方式称为“隐式拆包”。
看看下面代码:
var n1: Int? = 10
print(n1! + 100) //显式拆包

var n2: Int! = 100
print(n2 + 200) //隐式拆包

© 著作权归作者所有

共有 人打赏支持
法斗斗
粉丝 20
博文 336
码字总数 6335
作品 0
杨浦
程序员
Swift 4.0 基础学习总结(一)

Swift简介 作者:Chris Lattner Swift 2010年7月开始设计,1年时间完成基本架构,经历4年开发期于WWDC 2014 苹果2014年开发者大会发布,用于撰写OS X和iOS应用程序。 特点: 语法简单,代码简...

xx_cc ⋅ 2017/11/20 ⋅ 0

Swift - 变量、常量、可选项、字面量

Swift变量 变量是一种使用方便的占位符,用于引用计算机内存地址。 Swift每个变量都指定了特定的类型,该类型决定了变量占用内存的大小,不同的数据类型也可以决定可以存储值的范围。 上一篇...

Albert_Lee ⋅ 2017/11/15 ⋅ 0

10-Swift中的可选类型

swift中的可选类型 注意: 可选类型时swift中非常难理解的一个知识点 暂时先了解,多利用Xcode的提示来使用 随着学习的深入,慢慢理解其中的原理和好处 概念: 在OC开发中,如果一个变量暂停不使用...

不孤独的美食家 ⋅ 2016/08/08 ⋅ 0

iOS开发系列--Swift 3.0

概述 从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行。在...

jianxin160 ⋅ 2016/06/17 ⋅ 0

Swift2.0语言教程之类的嵌套与可选链接

Swift2.0语言教程之类的嵌套与可选链接 Swift2.0语言类的嵌套 在一个类中可以嵌套一个或者多个类。它们的嵌套形式也是不同的,大致分为了两种:直接嵌套和多次嵌套。下面依次讲解这两种方式。...

大学霸 ⋅ 2015/07/22 ⋅ 0

Swift中的可选类型(Optional)

Swift中的可选类型(Optional) 什么是Optional Optional在Swift中表示可选类型,那么什么是可选类型? 我们都知道,在Swift中,属性的值都是不能为的,但是在正常情况下你不可能一开始就确定...

Yenn ⋅ 2015/08/28 ⋅ 0

The Swift Programming Language

基础部分(The Basics) 1.0 翻译:numbbbbb, lyuka, JaySurplus 校对:lslxdx 2.0 翻译+校对:xtymichael 2.1 翻译:Prayer 校对:shanks,overtrue本页包含内容: 常量和变量声明常量和变量...

Align ⋅ 2016/01/12 ⋅ 0

重读 Swift 之一:Optional(可选型)

之前学习 Swift 的时候都是比较破碎,零零散散,以至于有些地方学习的不够透彻。所以趁最近有时间,就开始重新学习 Swift ,从最基本的开始学习,希望能深入理解,见微知著! 关于 Swift 我们...

HenryCheng ⋅ 2016/08/05 ⋅ 0

Swift入门篇-基本类型

Swift入门篇-基本类型 一:元组 格式 变量或常量关键字 元组变量 = ( 变量,变量, …) 说明: 1: 元组变量还是一个变量,只不过表现方式和其他变量不一样 2:()括号里面可以放入N个变量组...

法斗斗 ⋅ 2016/03/02 ⋅ 0

swift中!和?

swift中!和? swift定义常量变量时只是定义了,并不会默认赋值,(也就是没有初始化,变量在使用前必须初始化,否则会报错 variable ‘变量名/常量名’ used before being initialized). 除...

水一样的人儿 ⋅ 2016/11/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

Spring JDBC使用方法

普通实现: 1、创建数据表customer。 可以使用任何数据库实现,在项目中要引入相应数据库驱动包并配置相应数据库连接。 2、创建Customer pojo。 Customer类的属性对应数据库的属性,除了为每...

霍淇滨 ⋅ 今天 ⋅ 0

Contos 7 安装Jenkins

Jenkins是一款能提高效率的软件,它能帮你把软件开发过程形成工作流,典型的工作流包括以下几个步骤 开发 提交 编译 测试 发布 有了Jenkins的帮助,在这5步中,除了第1步,后续的4步都是自动...

欧虞山 ⋅ 今天 ⋅ 0

revel

revel install go get github.com/revel/revelgo get github.com/revel/cmd create new app revel new git.oschina.net/zdglf/myapp run app revel run git.oschina.net/zdglf/myapp ot......

zdglf ⋅ 今天 ⋅ 0

49. Group Anagrams - LeetCode

Question 49. Group Anagrams Solution 思路:维护一个map,key是输入数组中的字符串(根据字符排好序) Java实现: public List<List<String>> groupAnagrams(String[] strs) { Map<Strin......

yysue ⋅ 今天 ⋅ 0

spring Email

使用spring发Email其实就是使用spring自己封装携带的一个javamail.JavaMailSenderImpl类而已。这个类可以当一个普通的java对象来使用,也可以通过把它配置变成spring Bean的方式然后注入使用...

BobwithB ⋅ 今天 ⋅ 0

spark 整理的一些知识

Spark 知识点 请描述spark RDD原理与特征? RDD全称是resilient distributed dataset(具有弹性的分布式数据集)。一个RDD仅仅是一个分布式的元素集合。在Spark中,所有工作都表示为创建新的...

tuoleisi77 ⋅ 今天 ⋅ 0

思考

时间一天天过感觉自己有在成长吗?最怕的是时光匆匆而过,自己没有收获!下面总结下最近自己的思考。 认识自己 认识另一个自己,人们常说要虚心听取别人意见和建议。然而人往往是很难做到的,...

hello_hp ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部