swft 语言 java_Swift语言中与C/C++和Java不同的语法(二)
这一部分,主要讲Swift中创新的可选型(optionals)
一、概要
可选型是Swift创新的一种新的类型,首先看一下可选型的应用场景:
var errorCode : Int = 404
这时候errorCode的值是404,表示此时的错误状态码是404,当产生一种错误的时候就会获得其对应的errorCode,
但是如果没有错误那应该怎么办呢?
在C/C++和Java中我们会给errorCode赋值为0或者是null(其实null也就是0),但是我们怎么能够保证0不是一种错误的状态码呢?
Swift为了解决这一问题,提供了可选型(optionals)当这个值不存在的时候,我们用nil表示,
需要注意的是:
var errorCode : Int = 404
errorCode = nil
这是错误的,因为nil是一种特殊的类型,是不可以赋值给int型的变量的。
正确的操作是:
var errorCode : Int? = 404
errorCode = nil
添加一个?就对了,这时候Int?表示的是整型的可选型
需要注意的是,可选型不可以赋值给不可选型的变量。
二、可选型的解包
在使用可选型的时候,需要进行解包操作,有两种解包(unwrap)方式:
1)强制解包
var errorCode : Int? = 404
print(“The errorCode is”+errorCode!)
这种解包方式需要开发者保证errorCode的值不是nil,否则就会报错。
2)if-let解包
var errorCode : Int? = 404
if let errorCode = errorCode {
print(“The errorCode is”+errorCode)
}
建议采用这种方式,当出现多个量需要解包的时候:
if let errorCode = errorCode,
errorMessage = errorMessage{
}
三、optional Chaining
先看看应用环境:
var errorMessage : String? = “Not Found”
if let errorMessage = errorMessage{
errorMessage.uppercaseString
}
这种方式是错的,因为errorMessage是String而不是String?
如果要使用String的uppercaseString方法的话可以这样做:
errorMessage?.uppercaseString
或者
errorMessage!.uppercaseString(确定不是nil)
这里的返回类型也是一个可选型
如果errorMessage!.uppercaseString返回,再进行操作就类似一条chain。
四、nil coalesce
我们建议在声明变量的时候就给变量赋初值,但有时候,我们希望通过后面的逻辑判断之后再对变量进行赋值
这时候我们可以这样做:
var errorMessage : String? = nil
let message = errorMessage == nil ? “Not Found” : errorMessage
当然可以通过nil coalesce方式
var errorMessage : String? = nil
let message = errorMessage??“Not Found”
五、元组的可选型
var error1 : (errorCode : Int?, errorMessage : String?) = (404, “Not Found”)
其中errorCode和errorMessage是可选型,但是error1不是可选型
因此errorCode和errorMessage可以是nil,而error1不可以
var error1 : (errorCode : Int?, errorMessage : String?)? = (404, “Not Found”)
errorCode和errorMessage,error1就都是可选型了
六、隐式可选型
主要应用在函数的构造函数中
var errorMessage : String! = nil
!进行使用的时候可以不进行解包操作,但是必须确保不为nil
在使用的时候,构造函数可以这样定义,但是在后面会先赋值,再使用。
swft 语言 java_Swift语言中与C/C++和Java不同的语法(二)相关推荐
- swft 语言 java_Swift语言中与C/C++和Java不同的语法(一)
---恢复内容开始--- Swift作为苹果官方推出的IOS开发的推荐语言,在过去的几年间受到了越来越广泛的关注,其实编程的人都知道,不同的编程语言大同小异,掌握一门新的语言关键是了解它与其它语言不同 ...
- 8位alu运算器(vhdl语言)_C语言中signed char类型,能表示-128到127,为什么负数多一位?...
初学者在学习C语言,谈到不同数据类型时,一般都能理解 unsigned 和 signed 的区别,无非就是有无符号而已.但是对于 signed 数据类型的数据范围,初学者却常常会感到迷惑. 对于 si ...
- 函数用法r语言_R语言中的apply函数族
前言 apply函数族是R语言中数据处理的一组核心函数,通过使用apply函数,我们可以实现对数据的循环.分组.过滤.类型控制等操作.但是,由于在R语言中apply函数与其他语言循环体的处理思路是完全 ...
- table是什么函数c语言,c语言中table的用法
c语言中table的用法 c语言中table的用法的用法如下:1 说明1.1 RECORD定义记录数据类型. 它类似于C语言中的结构数据类型(STRUCTURE),PL/SQL提供了将几个相关的.分离 ...
- c语言memcopy_C语言中memcpy 函数的用法详解
C语言中memcpy 函数的用法详解 memcpy(内存拷贝函数) c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址 ...
- map函数作用c语言,c语言中map的用法:map基本用法
c++中map容器提供一个键值对容器,那么你知道map的用法有哪些吗,下面秋天网 Qiutian.ZqNF.Com小编就跟你们详细介绍下c语言中map的用法,希望对你们有用. c语言中map的用法:m ...
- sleep函数的作用c语言,C语言中的sleep函数是什么意思【详细介绍】
计算机知识:C语言中的Slee函数 Sleep函数简介: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned milliseconds); 在V ...
- div c语言,c语言中的div的用法是什么?
c语言中的div的用法: 函数名: div 功 能: 将两个整数相除, 返回商和余数 用 法: div_t (int number, int denom); 程序例: # include #inclu ...
- python语言str_python语言中的str是什么意思
python语言中的str是什么意思 发布时间:2020-07-15 10:35:17 来源:亿速云 阅读:472 作者:Leah 本篇文章给大家分享的是有关python语言中的str是什么意思,小编 ...
最新文章
- 【组队学习】【27期】青少年编程(Turtle)
- SAP PM 初级系列5 - 工作中心相关的配置
- shell编程开发应用指南
- 有关大型数据中心项目建设的常见问题
- Intellij idea 14 创建简单的Web项目
- 【NLP】CS224N课程笔记|词向量I: 简介, SVD和Word2Vec
- 对前端Jenkins自动化部署的研究
- Andorid Scrolling Activity(CoordinatorLayout详情)
- eclipse创建maven
- 微软发布ASP.NET 5路线图
- cad 计算机图库,CAD超级图库
- 2020非常全的接口测试面试题及参考答案-软件测试工程师没有碰到算我输!
- mac测试电池软件,BattMan(Mac电池监测软件) V1.6 Mac版
- excel合并两列内容_Excel 两列合并成一列,又一种快捷方法!
- 对数用计算机,如何使用计算器计算对数
- 【CDH】cdh 安装新节点卡在“Acquiring installation lock...“
- 如何解密Token?
- rabbitmq消息发送与接收stomp通道测试
- 超参数的选择与交叉验证
- 计算机二级是win7,计算机二级等考宝典