iOS,object-c和swift开发Swift首页投稿(暂停使用,暂停投稿)

Swift基础语法-可选类型--OC 中没有的概念

2016-07-30  本文已影响45人  DwightChan

1. 可选类型的概念


2. 定义一个可选类型有两种写法

// 错误写法
// let string : String = nil
// 正确写法:
// 注意:name的类型是一个可选类型,但是该可选类型中可以存放字符串.
// 写法一:定义可选类型
let name : Optional<String> = nil

// 写法二:定义可选类型,语法糖(常用)
let name : String? = nil
//有值
var optValue: Int? = 9
//没有值
var optValue1: Int?
var optValue2: Int? = nil

3. 可选类型利用if语句来进行判断

var optValue3: Int? = 10
if optValue != nil{
    print("有值:\(optValue)")
}else{
    print("没有值:\(optValue)")
}
//输出结果: 有值:Optional(10)
var optValue4: Int?
if optValue != nil {
    print("有值:\(optValue)")
}else {
    print("没有值:\(optValue)")
}
//输出结果: 没有值:nil

5. 提取可选类型的值, 使用感叹号!强制解析

var optValue6: Int? = 9
var result: Int = optValue!
print(result)
//输出结果:9
var optValue7: Int?
var result2: Int = optValue7!  // 空值强制解析运行时错误
print(result2)
//结果为报错:
//fatal error: unexpectedly found nil while unwrapping an Optional value

6. 可选绑定

var name : String? = nil // 语法糖
name = "cdh"
if name != nil {  // 这没有进行可选绑定
    print(name!)  
    print(name!)  // 多次解包
}
var optValue8: Int? = 9
if let result = optValue{ // 可选绑定, 在判断语句中可以减少多次解包取值
    print(result)
    print(result) // 不需要重复解包
}
var name : String? = nil // 语法糖
name = "cdh"
if let name = name {  
// 等号左右两边的代表的是不同的变量或者常量, 可以命名可以
    print(name)
}
上一篇 下一篇

猜你喜欢

热点阅读