swift学习3 数据类型的可选值 optional type
2015-12-10 18:05
411 查看
swift不仅要求类型安全,还尽力保证数据安全,未赋值的变量不允许使用
那么如果一开始不想赋值,就需要可选值定义,在类型后加问号?
输出值为 nil,这里的nil与oc中的有所区别,但基本概念都是空值
但是注意,常量不能用可选值定义
可选值之间可以相互赋值
不同的可选值之间不可以转换类型
Int?向Int?赋值时,可以强制解析
Int?向Int也可以赋值,同样强制解析
Int向Int?赋值,无需解析
当我想判断optional是否有值并赋值时,可以用判断
隐式可选类型,是可选类型的一个补充,用法一样,?换为!
它不需要再强制解析
可选类型要注意安全问题,因为变量不赋值,也可以调用,但是运行时会报错
那么如果一开始不想赋值,就需要可选值定义,在类型后加问号?
输出值为 nil,这里的nil与oc中的有所区别,但基本概念都是空值
但是注意,常量不能用可选值定义
可选值之间可以相互赋值
var optVar1 :Int? print(optVar1)//nil var optVar2 :Int? = 110 print(optVar2)//Optional(110) optVar1 = optVar2 print(optVar1)//Optional(110)
不同的可选值之间不可以转换类型
var optVar1 :Int? var optVar2 :UInt? = 110 optVar1 = Int?(optVar2) //cannot invoke initializer for type 'Int?' with an argument list of type '(UInt?)'
Int?向Int?赋值时,可以强制解析
optVar1 = optVar2! print(optVar1)//Optional(110)
Int?向Int也可以赋值,同样强制解析
var a = optVar2! print(a)//110
Int向Int?赋值,无需解析
optVar2 = a + 1 print(optVar2)//Optional(111)
当我想判断optional是否有值并赋值时,可以用判断
if var abc = optVar2 { print("abc");print(abc) }//abc 111 var optVar3 : Int? if var bcd = optVar3 { print(bcd)//无打印 } if optVar2 == nil { print("nil") } else { print ("not nil")//not nil }
隐式可选类型,是可选类型的一个补充,用法一样,?换为!
var oprVar4 : Int! = 8 var aaaa = oprVar4 print(aaaa)//8
它不需要再强制解析
可选类型要注意安全问题,因为变量不赋值,也可以调用,但是运行时会报错
var oprVar4 : Int? var aaaa = oprVar4! print(aaaa)//fatal error: unexpectedly found nil while unwrapping an Optional value
相关文章推荐
- Swift 中随机数
- Swift初学习
- Swift-封装购物车Model 数据模型
- swift学习2 元组 tuples
- Swift之基本数据类型间的转换
- Swift使用Playground编程
- Swift的String类型转换如何实现?
- swift学习1 基本数据类型
- 【Swift】—— 中国课程
- Swift-打开其它Storyboard中的自定义模态窗口
- Swift快速入门(一)基本类型
- Swift中延迟属性@lazy
- Swift学习(一:认识必要数据类型)
- swift开发中No such module 'Cocoa' 错误
- iOS项目之Swift新闻App(一)—应用界面布局
- swift实际使用中遇到的问题及解决(3)
- Swift 基础语法
- 何时使用strong、weak以及unowned
- Swift中编写单例的正确方式
- swift第四天学习