Swift的可选项问题
/*
1. 定义常量用 let;定义变量用 var
2. 定义的非可选项的常量/变量,在使用前必须进行初始化,否则使用的时候会报错
3. 定义可选项的常量/变量,变量默认初始化为nil,常量没有默认初始化,需要自己进行初始化
4. 定义可选项用 ‘?’ 如:let x: Int? 解包用 ‘!’,只有准备计算的时候才进行 解包
5. 程序员必须为每一个 ‘!’ 进行负责,在实际开发中,尽量少使用 ’!‘,主要是因为可能会出现强行解包失败
*/
class ViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
demo()
}
func demo1() -> ()
{
var a: Int
print(a) // 因为没有初始化,会报错
let b: Int
print(b) // 因为没有初始化,会报错
// 1> 定义y没有初始化
let y: Int?
// 2> 给常量设置数值,初始化的工作职能做一次
y = 20
// 如果再赋值一次就会报错
// y = 40
print(y)
// var定义的变量的可选项默认值是nil
// let定义的常量的可选项没有默认值
var x: Int?
print(x)
}
// 可选项有两个值,一个是 nil 另一个是指定值。如 x: int?x有两个值,一个是nil,一个是指定的整数
// 最常见的错误
// unexpectedly found nil while unwrapping an Optional value
// 在解包的时候发现了 nil 值
/**
定义可选项用 ‘?’
解包用 ‘!’,准备计算
*/
func demo()
{
// 1. 原始的可选项定义
// none 没有值,或者some 某一类值
let x: Optional = 10
// 输出结果 optional(10),提示这是一个可选项
print(x as Any)
// 2. 简单地定义
// ‘?’用来定义 y 是一个可选的Int类型,可能没有值,也可能有一个整数
let y: Int? = 20
print(y as Any)
// 1> 不同类型之间的值不能直接运算,如果没有值是nil 不是任何数据类型,不能参与计算
// 2> ‘!’ 强行解包 - 从可选值中强行获取对应的非空值
print(x! + y!)
let z: Int? = 2// nil
print(z as Any)
// fatal error: unexpectedly found nil while unwrapping an Optional value
// 程序员必须为每一个 ! 负责
// 程序中要少用 ‘!’
print(x! + y! + z!)
}
}
posted on 2017-07-06 09:22 TangBin604 阅读(107) 评论(0) 编辑 收藏 举报