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 ...
随机推荐
- HTML表格边框的设置小技巧-表格
对于很多初学HTML的人来说,表格<table>是最常用的标签了,但对于表格边框的控制,很多初学者却不甚其解. 一般我们用表格的时候总会给它个border属性,比如:<table b ...
- redis 学习
http://blog.csdn.net/z69183787/article/category/2923783
- UIResponder学习
http://blog.csdn.net/jimzhai/article/details/23283515 UIResponder 介绍 UIResponder 这个类定义了很多用来处理响应和时间处理 ...
- jQuery插件的开发
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...
- Maven项目中pom文件分析
pom英文全称: project object model 1.概述 pom.xml文件描述了maven项目的基本信息,比如groupId,artifactId,version等.也可以对maven项 ...
- VMWare虚拟机启动报错物理内存不足
尝试了三种修改 1.说是微软补丁KB2995388冲突-->>失败 2.修改win8.1高级环境性能更改设置-->>失败 3.修改config.ini文件-->>成 ...
- Valgrind 快速入门
1. 介绍 Valgrind工具组提供了一套调试与分析错误的工具包,能够帮助你的程序工作的更加准确,更加快速.这些工具之中最有名的是Memcheck.它能够识别很多C或者C++程序中内存相关的错误,这 ...
- [git] 细说commit (git add/commit/diff/rm/reset 以及 index 的概念)
http://kasicass.blog.163.com/blog/static/39561920133294219374/ 创建测试仓库 $ git init $ echo "line o ...
- Reactive 手机网络状态
RAC([UIApplication sharedApplication], networkActivityIndicatorVisible)
- OSG开发概览(转载)
OSG开发概览 1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns 为了对滑翔机的飞行进行模拟,对open ...