Swift 提供了自己的基本数据类型对应C和OC中的基本数据类型,包括Int描述整型,Double和Float描述小数类型,Bool描述布尔值,String描述字符串类型.当然也提供了主要的集合类型的数据类型,Array,Set和Dictionary,这些集合类型有专门一章来介绍它们。
像C一样,Swift也使用变量存储数据根据变量名获取该变量存储的数据。Swfit也广发使用了那些不会改变的变量值。他们就是常量,比C里面的常量更强有力。常量贯穿整个Swift使那些不改变的量被你编码起来更安全简洁。
除了那些熟悉的类型,Swift还介绍了OC找不到的高级的类型比如元组。元组可以让你创建传递多种类型的数据。你可以使用元组作为一个函数的返回值来返回多种类型的数据,就像返回一个单一的复合类型。
Swift也介绍了可选类型(?),来处理缺失的类型。这些可选类型说“这是一个值,and它等于x”或者说“这完全不是一个值”。使用可选类型就类似于OC的空指针,但是他们可以适用任意类型,而不只是类。可选类型相对于OC的空指针来说不但更安全而且更易于表达。他们是Swif许多最强大功能的核心。
Swift是一门安全的语言,那就意味着它可以帮助我们让你的代码可以使用的值的类型更简洁。如果你的部分代码想要一个String,类型安全就会避免你传递一个Int给它。而且,类型安全避免你传递一个可选类型的String给想要一个不是可选类型的String的代码片段。类型安全帮助你在开发过程中捕捉修复错误变得尽可能容易。
定义常量 let a = 1 定义常量 let a:Int = 1 定义变量 var a = 1 定义变量 var a:Int
Int (32 , 64) 的取值范围和你操作系统的范围一致 , 32bit系统的是 -(2)16次方~(2)16次方 64bit系统的是 - (2)32次方~ (2)32次方 UInt 无符号整型 0~(2)32次方 和 0~(2)64次方 UInt8 UInt16 UInt32 UInt64
typealias 别名 类似于 type define
可选变量 var a:Int? 没有赋初值默认是nil
a! (强制解析)的时候要先判空
if ( a != nil ) {print(a!)}
//Int(possibleNumber) 类型转换成Int ? 可以是空值(nil)
let actualNumber = Int(possibleNumber) 用一个临时常量存储这个值 ,用这种方式来判断一个值是否为空(nil),当然这里的Int类型就是possibleNumber原来的类型,只不过用这种类型重写来判断是否是空值
if let actualNumber = Int(possibleNumber) {
print("\"\(possibleNumber)\" has an integer value of\(actualNumber)")
}else{
print("\"\(possibleNumber)\" could not be converted to an integer")
}
//多个条件判断 用逗号隔开 ,功能相当于&&(与)
if let firstNumber = Int("4") , let secondNumber = Int("42") , firstNumber < secondNumber && secondNumber < 100 {
print("\(firstNumber)<\(secondNumber)< 100")
}
Implicitly unWrapped Optionals 隐式解包 如 String! 而不是 String?
从程序的结构可以清楚地看出一个变量(或者常量)是始终有值的就用每次都检查是否要解包,这种情况就用隐式解包 如:var a : String! 下面是api文档的例子 帮助理解 (就是使用了隐式解包,以后取值的时候就不用强制解包了,直接拿它的值) 对于隐式解包的判空和前面可选类型一致
let possibleString:String? = "An optional string."
let forcedString:String = possibleString! // requires an exclamation mark
let assumedString:String! = "An implicitly unwrapped optional string."
let implicitString:String = assumedString // no need for an exclamation mark
捕捉错误 Error Handling (和可选类型相反,可以允许error的出现(也就是空值))
func canThrowAnError() throws {
// this function may or may not throw an error
}
do{
try canThrowAnError()
// no error was thrown
}catch{
// an error was thrown
}
//上面的例子是这样的 先走这个do{}catch{} 然后走try{}里面的方法 canThrowAnError() 如果出现了error 那就走catch{}里面。
func makeASandwich() throws{
// ...
}
do{
try makeASandwich()
eatASandwich()
}catch SandwichError.outOfCleanDishes {
washDishes()
}catch SandwichError.missingIngredients(let ingredients) {
buyGroceries(ingredients)
}
//makeASandwich()这个例子和上面的差不多,只不过对两个方法进行了error抓取,对error的类型分了类。
Assertions 阻止程序继续执行 可以和端点一起调试
let age = -3
assert(age>=0,"A person's age cannot be less than zero")//当条件不满足是终止应用程序
网友评论