swift3.0学习笔记(一) 可选类型

引入可选类型原因

  • 在OC中若一个变量木有赋值,系统会给一个默认值,但是swift木有默认值(注:木有值和值为0是两个不同哒概念),所以引入一个可选类型.

可选类型的定义

  • 一个变量, 分为有值和木有值.
    可选类型可以保存nil.
  • 写法一:基本写法
let name: Optional<String> = "123"
  • 写法二: 语法糖(常用)
let name2: String? = "123"

解包

解包就是获取可选变量的真实值

  • 问题:若可选类型的值为nil,那么强制解包会报错
解包的三种慌法:
  • 方法一:强制解包
//直接判断,简单粗暴. 缺点:使用时需要加上!
if kexuan != nil{
    kexuan!
}
  • 方法二:可选绑定
//此法较为优雅.先判断可选类型是否有值,若木有则返回false,若有值就强制解包,赋值给value

if let value = kexuan{
    value
}
  • 方法三:guard判断
//提高程序的可读性
func test(age:Int?){
    guard let value = age else {
        return
    }
    value
}
test(age: 16)

应用场景

// a. 把字符串转成int类型时,若为nil会报错.
let str = "a123"
let num = Int(str)
num

//b. 判断网址正确与否
let url = URL(string:"http://😋www.baidu.com")

//c. 创建图片啦
let image = UIImage(named:"abc")

//d. 函数问题
func test2 (a:Int?){
    //内部考虑
}
//加入可选类型后,外界不需要处理
//let aaaa:Int? = 90
test2(a: 10)

注意:

  • 可选类型不能直接用.
let image = UIImage(named:"abc")
//创建类,使用构造函数,所以imageView可以接收可选类型.
let imageView = UIImageView(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
imageView.image = image
  • ! 的作用
// ! 是指告诉编译器我知道它是可选类型,在使用前一定是赋值过的.可以直接用.
//但是这种转换方式不安全,一旦转换失败就会崩溃
var cc: Int! = 666

结语:本人程序媛小白一只,有激励才有成长😝,望众大神轻喷~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容