数据类型
1.基础数据类型:Int Double Float Bool String
2.集合类型:Array Set Dictionary
3.其他:
元组:(用于函数返回多个值)
可选类型(Optional):
let possibleNumber = "test"
let convertedNumber = Int(possibleNumber)
// convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int"
1.一个可选的Int被写作Int?而不是Int。问号暗示包含的值是可选类型,也就是说可能包含Int值也可能不包含值。
2.nil不能用于非可选的常量和变量。如果你的代码中有常量或者变量需要处理值缺失的情况,请把它们声明成对应的可选类型
3.一个可选的Int被写作Int?而不是Int。问号暗示包含的值是可选类型,也就是说可能包含Int值也可能不包含值。
let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // 需要惊叹号来获取值
断言
可选类型
可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况。然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能没办法继续执行。这时,你可以在你的代码中触发一个断言(assertion)
来结束代码运行并通过调试来找到值缺失的原因
使用全局assert(_:_file:line:)
函数来写一个断言。向这个函数传入一个结果为true或者false的表达式以及一条信息,当表达式的结果为false
的时候这条信息会被显示:
let age = -3
assert(age >= 0, "A person's age cannot be less than zero")
// 因为 age < 0,所以断言会触发
如果不需要断言信息,可以省略,就像这样:asset(age >= 0)
断言的适用场景:
- 整数类型的下标索引被传入一个自定义下标实现,但是下标索引值可能太小或者太大。
- 需要给函数传入一个值,但是非法的值可能导致函数不能正常执行。
- 一个可选值现在是nil,但是后面的代码运行需要一个非nil值。
注意:
1.当代码使用优化编译的时候,断言将会被禁用,例如在 Xcode 中,使用默认的 target Release 配置选项来 build 时,断言会被禁用
2.当代码使用优化编译的时候,断言将会被禁用,例如在 Xcode 中,使用默认的 target Release 配置选项来 build 时,断言会被禁用