Swift入门教程:基本语法(四)
可选类型
可选类型的使用场合
var kIndex : Int?
var kIndex : Int? = nil
可选类型的应用
let num = "156".toInt() // 156
let num2 = "itcast".toInt() // nil
注意:num和num2都是Int?类型,不是Int类型
可选类型的本质
var num : Int? = 10
// 上面代码是将Int类型的10,包装成了Int?类型的数据

var num : Int? = 10
var numValue : Int = num // 这行会报错
相反,可以直接将Int类型赋值给Int?类型
var numValue : Int = 20
var num : Int? = numValue // 自动将Int包装成Int?
var num : Int? = 10
var numValue : Int = num!
// 将num中(包装)的值取出来,赋值给numValue
基本概念
fatal error: Can't unwrap Optional.None
var num : Int?
var numValue = num! // 这行会报错
因此:在进行强制解包之前,一定要先检测可选类型(包装)的值是否存在
可选类型和if
let num = "156".toInt()
if num {
println("num的值是\(num!)")
} else {
println("num的值不存在")
}
可选类型的价值
if var num = "156".toInt() {
} else { }
隐式解包
var num : Int? = 10
var numValue : Int = num!
var num : Int! = 20
var numValue : Int = num // 自动解包,不用再使用 ! 进行强制解包
// num是被声明为隐式解包的可选类型Int!
隐式解包的原理和应用
Swift入门教程:基本语法(四)的更多相关文章
- Swift入门教程:基本语法大全
原文:Swift入门教程:基本语法大全 简介: ...
- Swift入门教程:基本语法(三)
打印输出 Swift提供了2个打印输出函数 println :输出内容后会自动换行 print :对比println,少了个自动换行的功能 示例 输出字符串 println("欢迎学习传智播 ...
- Swift入门教程:基本语法(一)
简介: 什么是S ...
- Swift入门教程:基本语法(五)
断言 断言是一种实时检测条件是否为true的方法 如果条件为true,那么代码继续执行 如果条件为false,就抛出错误信息,直接终止程序的运行 断言的用法 使用全局的assert函数 passe ...
- Swift入门教程:基本语法(二)
数字格式 数字可以增加额外的格式,使它们更容易阅读 可以增加额外的零 0 let money = 001999 // 1999 let money2 = 001999.000 ...
- 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
http://blog.csdn.net/poem_qianmo/article/details/26977557 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...
- 《Visual C++ 2010入门教程》系列四:VC2010中初学者常见错误、警告和问题
<Visual C++ 2010入门教程>系列四:VC2010中初学者常见错误.警告和问题 这一章将帮助大家解释一些常见的错误.警告和问题,帮助大家去理解和解决一些常见问题,并了解它的 ...
- ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...
- D3.js的v5版本入门教程(第四章)—— 理解Update、Enter、Exit
D3.js的v5版本入门教程(第四章) Update.Enter.Exit是D3.js中很重要的概念,下面来讲一下它们到底是什么?(当你看完后.你就会知道如果数据集个数和选择集个数不匹配的情况下使用d ...
随机推荐
- CentOS6.5设备MRBS
//--------------------------------------软件必须安装-----------------------------------// # yum install –y ...
- LinuxDLL加载优化方案
作者:zhanhailiang 日期:2014-10-26 linux程序动态库载入流程简单介绍 linux从程序(program或对象)变成进程(process或进程),简单说来须要经过三步: fo ...
- Mysql 5.6 新特性
随笔,真的随笔,以后理解得更深了再修改. Index Condition Pushdown 更多的让存储引擎去处理Where语句中的条款,避免返回无关字段数据等: Multi-Range Re ...
- JDK自带的监控分析工具JConsole
非常多开发人员认为自己懂Java编程.事实是大多数开发人员都仅仅领会到了Java平台的皮毛.所学也仅仅够应付工作. 作者将深度挖掘Java平台的核心功能.揭示一些鲜为人知的事实.帮助您解决最棘手的编程 ...
- SQL 2008 SP2 找不到SQL Server Engine
原文:SQL 2008 SP2 找不到SQL Server Engine 最近我有个客户碰到一个很奇怪的问题.他安装SQL server 2008 SP2的时候, SP2的安装程序无法找到SQL se ...
- javascript滚动栏响应鼠标滑轮的实现上下滚动事件
实现鼠标滚动滚轮事件: <script type="text/javascript"><pre name="code" class=" ...
- ACM-DP最大连续子——hdu1231
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- Mac下Jekyll安装
之前一直用Wordpress,虽然功能强大,各种插件各种bug,如果想弄个主题,折腾得要命.最近改用jekyll+gitHub免费空间.记录一下. 我用的是Mac,所以只讲述Mac下如何安装,Wind ...
- 编译的依赖不能vs的release工程
前言: 今天,我们正在做一个ocx插件的时候,放到刚装好win7系统的虚拟机上面注冊,弹出以下的一个错误提示: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...
- 携程Java工程师——一道面向对象面试选择题(转)
public class Base { private String baseName = "base"; public Base() { callName(); } public ...