类型别名
给数据类型取别名。比如给Int数据类型取别名,一个叫小孩,一个叫少年,一个叫青年,一个叫老年。实际上都是Int数据类型,只不过在代码阅读的时候,方便理解得多。
typealias child = Int
typealias Teenager = Int
typealias young = Int
typealias old = Int
类型转换
var a = 11
var b = String(a)
?? 语法:
当我们强制转换一个数据类型的时候,如果转换不了,那么就告诉编译器,转换不了的时候,取我??符号后面的值。
var a = "hello"
var b = 12
b = b + Int(a)??10
此时a的值是非数字字符串类型,所以转不了Int,因此会取??后面的10作为参数,最终b的赋值为12+10=22.
可选类型:问号?与 感叹号!
当我们用var来定义变量而不赋初始值的时候,系统就会报错。因为swift需要值的内容来确定该变量的数据类型,并不会像java、oc等语言一样,给没有初始化的变量赋初始值。
而在声明变量的时候,在声明类型的右侧加上“ ? ”,则表示该变量有可能为空,有可能不为空。这时候编译器就不会强制给该变量赋初始值了,也就不会报错了。
在开发中,空nil也是一种数据类型。
我们经常会碰到,有些变量比如Button暂时为空,仅仅是先声明有这么一个Button,还没有初始化赋值,这种情况在所难免。
由于Swift是强类型语言,Button的类型应该是UIButton而不是nil空类型,Swift中必须要明确每个变量与值的类型一一对应上,因此,当Button = nil 时会报类型不匹配的错误。
遇到这种情况可以声明该值可能为空的变量为可选类型。
另外,比如String的可选类型和String类型不是同一种类型,在进行赋值的时候也是会报错的。
func getSomeString()->String?{
......
}
let someString:String = getSomeString()//错误
//因为getSomeString()方法返回的是一个可选的String类型,
//和someString变量所声明的String类型不是同一种类型,所以编译不通过。
let someString:String? = getSomeString()//正确
可选类型的声明方式:
//方式1:
var button : Optional<UIButton> = nil
//方式2:
var name : String? = nil
如果我们确定某变量有值,可以在其右侧加上“ ! ”进行强制解包, 则表示告诉编译器该变量不为空,使得可以直接取出Optional当中的值。但如果该变量为nil而进行了强制解包,则会导致系统崩溃。如果真的需要进行强制解包的操作,建议在解包前,先对变量是否为nil做一下判断。
var year : Int = 100 //对的
year = nil //报错
var years : Int! = 100 //对的
years = nil //允许编译通过
可选绑定:
var string : String?
if let year = string {
print("year is (year)")
}
原文地址:https://blog.csdn.net/kkkenty/article/details/124606708
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_14281.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!