swift 可选类型笔记
晚上十一点半了,看书累了,原本想睡了的,想了想,还是把刚看的总结一下,把这篇笔记写了吧。广州下雨,真特么的冷。。好了,废话不说了,说正题说说Swift可选类型。
先定义一个变量:
var string="zhangxu"
想想这个变量要强转成 Int 类型的会怎样?
// var Zint: int = string.toint() 这样子肯定是不行的,没发转换成 Int 类型的,那有没有想过 Zint 的值会是什么呢? 这时候我们今天的主角,可选类型就登场了!
var Zint : int? = string.toint()
这句代码就描述的是可选类型, 所以 Zint 的类型不是 int 类型的,切记!它是 int?(可选类型)
那这个Zint的值会是什么呢,int?与int 的不同点我们知道了,也就明白了!
int? 可选类型,它能接受到的值得类型有两种。int 型 与 nil 值,这里的 nil 中的 nil 完全不是同一个概念,待会我们阐述!
int 型却只能接受 int 型的值,不能接受 nil 值!
所以,上面那个问题的答案我们也就知道了,Zint 的 值 是nil ,因为上面的强转是不会成立的。 而 Zint 的类型确实是 int? 类型,它能接受nil 值,所以它的值是 nil
这就是第一点,可选类型!
有了可选类型,也就随之强制解析了(最重要的一点,只有可选类型,才能解析!!!) 接着以前面的Zint为例:
我再定义一个变量
// var ZX:int = Zint 这里会编译错误的。原因就是Zint的值为nil ,前面说了int 不接受nil值
看下面的代码:
var ZX:String?=@"123456789" // var Z:String = ZX 这里错误的原因是他们的类型不一样,大家琢磨一下!
但我这样写
var Z:String = ZX!
这样写是没有问题的,但还是不严谨!这里的ZX!就是做了解析的处理,他就是为了获取 ZX 这个变量确实存在的值!没有值是解析失败,在运行的时候报错的,所以说这里写的不严谨,我们严谨一点因该这样子写
if ZX != nil{
var Z:String = ZX!
}
最后一点了,说说隐式可选类型 ,先说一点,前面我们说的在类型后面加 ? 的其实就是显式的。
看下面:
var ZX : String!="12345678" var Z: String = ZX
首先说明这样子写是没有问题的! 在后面加 !号,就是我们说的隐式可选类型,其特点大家知道了,也就不难理解为什么那样子写是可以的,因为加了 ! 之后Swift会自己进行隐式的解析!就这么简单的一句话,它自己解析了!!既然解析了,就可以直接赋值给变量 Z 了,也就不觉得奇怪了,因为我们知道可选类型要赋值给不可选的类型的时候必须必须要进行解析!!!
就这样子先,明天还要上班,睡觉吧,十二点半了。。明天加油!晚安张小旭!
swift 可选类型笔记的更多相关文章
- [swift]可选类型
可选类型 <Swift权威指南>第2章千里之行始于足下——Swift语言基础,本章挑选了Swift语言的最基本特性加以介绍.尽管这些特性只占Swift全部特性的很少一部分,但却是所有的Sw ...
- Swift 可选类型-备
我们先看看如下代码: var n1: Int = 10 n1 = nil //编译错误 let str: String = nil //编译错误 Int和String类型不能接受 ...
- Swift - 可选类型说明
可选类型是Swift的一个特色.它表示一个变量有可能有值,也可能没有值(nil). 声明的方式是“数据类型+问号”. 而当要使用一个可选类型的变量是,要在后面加感叹号“!”. 1 2 3 4 5 6 ...
- swift 可选类型(optional)
可选类型定义 Swift 标准库中定义后缀 ?为可选类型 Optional<Wrapped> 的语法糖,这里语法糖可以简单理解为一种便捷的书写语法.也就是说,下面两个声明是等价的: va ...
- Swift - 可选类型详解
可选类型详解 直接上代码解释 // 类中所有的属性在对象初始化时,必须有初始化值 class Person : NSObject { var name : String? var view : UIV ...
- iOS:swift :可选类型
import UIKit /*: 可选类型 * 可选类型表示变量可以有值, 也可以没有值 * C 和 Objective-C 中并没有可选类型这个概念 * Swift中只有可选类型才可以赋值为nil ...
- Swift可选类型(Optional)之星耀
首先我们先看下Objective-C与Swift语言对于可选nil的不同理解: Objective-C中的nil:表示缺少一个合法的对象,是指向不存在对象的指针,对结构体.枚举等类型不起作用(会返回N ...
- Swift可选类型
可选类型 可选类型的介绍 注意: 可选类型时swift中较理解的一个知识点 暂时先了解,多利用Xcode的提示来使用 随着学习的深入,慢慢理解其中的原理和好处 概念: 在OC开发中,如果一个变量暂停不 ...
- swift 可选类型(optional)--- swift 入门
一.思维导图 二.代码 //这样无形中就会让代码很丑陋 if x != nil && y != nil { print("x或y都不等于空") } print(&q ...
随机推荐
- ZOJ 3927 Programming Ability Test
水题,判断一下加起来是否大于等于80 #include<cstdio> #include<cstring> #include<cmath> #include< ...
- iOS技术框架构和更新版本的技术特性
Core OS层 Sytem 系统层包括内核环境,驱动及操作系统层unix接口.内核以mach为基础,它 负责操作系统的各个方面,包括管理系统的虚拟内存,线程,文件系统,网络以及进程间通讯.这一层包含 ...
- java8 stream ,filter 等功能代替for循环
直接上代码,比较实在. 对象A public Class A{ private Long id; private String userName; ..... ....省略get和set方法 } 在L ...
- IOS开发-UI学习-UITextField的各种属性设置
UITextField是IOS中非常常用的一个控件,用来接收用户输入信息,完成应用和用户的交互.它的主要属性设置如下: //初始化textfield并设置位置及大小 UITextField *text ...
- 笔记-Python基础教程(第二版)第一章
第一章 快速改造:基础知识 01:整除.乘方 (Python3.0之前 如2.7版本) >>> 1/2 ==>0 1/2整除,普通除法: 解决办法1: 1.0/2.0 ==& ...
- HTML5学习笔记一:与html4的区别(整合)
一 语法的改变 1.1 HTML5中标记方法 1.内容类型(ContentType):扩展符仍为“.html”或".htm",内容类型仍是“text/html”. 2.DOCTYP ...
- Windows7启用超级管理员administrator账户的多种方法
开启win7家庭普通版的超级管理员账户Administrotor WIN7家庭普通版没有"本地用户和组"项,不能通过"用计算机右键-管理"的方法开启超级管理员帐 ...
- iPhone 屏幕分辨率
5S 640 x 1136 5 640 x 1136 4s 640 x 960 4 640 x 960 3gs 320 x 480
- C语言strstr()函数:返回字符串中首次出现子串的地址
今天又学到了一个函数 头文件:#include <string.h> strstr()函数用来检索子串在字符串中首次出现的位置,其原型为: char *strstr( char *s ...
- Eclipse 注释
Ctrl + / Ctri + Shift + / Ctrl + Shift + C