Swift的基础
Swift是用于iOS,macOS,watchOS和tvOS应用程序开发的新编程语言。 很快,很多人就会熟悉C和ObjectiveC。
Swift提供了自己的所有基本C和Objective C类型的版本,包括Int,Double,Float,Boolean和String。 Swift还提供了数组,集合和字典的集合类型。
Swift引入了在Objective C中找不到的高级类型,例如Tuples。 元组使您可以创建和传递值分组。
常量和变量
常量和变量将名称与特定类型的值相关联。 您可以使用let关键字声明constan,使用var关键字声明变量。
设a = 10
var b = 20
var x = 10,y = 20,z = 30
在声明常量或变量以明确常量或变量可以存储的值的类型时,可以提供类型注释。
var名称:字符串
var a,b,c:双精度
注释
swift中的注释与C中的注释非常相似。
//这是一条评论。
/ *这也是评论
但它写在多行上* /
/ *这是第一个多行注释的开始。
/ *这是第二个嵌套的多行注释。 / *
这是第一个多行注释的结尾。 / *
分号
如果要在一行上编写多个单独的语句,则需要使用分号。
设a = 10; 打印(a)
//打印10
整数
Swift提供8位,16位,32位和64位形式的有符号和无符号整数。
整数范围:您可以使用每种类型的最小值和最大值属性访问其最小值和最大值。
let minValue = UInt8.min // minValue等于0,并且类型为UInt8。
let maxValue = UInt8.max // maxValue等于255,类型为UInt8。
Int:在大多数情况下,您无需选择特定大小的整数即可在代码中使用。 Swift提供了一个额外的整数类型Int ,其大小与当前平台的本机字大小相同。
在32位平台上, Int与Int32的大小相同。
在64位平台上, Int与Int64相同。
UInt: Swift还提供了一个无符号整数类型的UInt ,其大小与当前平台的本机字大小相同。
在32位平台上, UInt与UInt32大小相同。
在64位平台上, UInt与UInt64相同。
浮点数字
与整数类型相比,浮点类型可以表示更大范围的值,并且可以存储可以存储在Int中的更大或更小的数字。 Swift提供了两种带符号的浮点数类型:
1. Double表示64位浮点数。
2. 浮点数表示32位浮点数。
数字文字
整数文字可以写为:
1.十进制数字,无前缀。
2.二进制数字,前缀为0b。
3.八进制数字,前缀为0o。
4.十六进制数字,前缀为0x。
所有这些整数文字的十进制值为17:
1.让十进制整数= 17
2. let binaryInt = 0b10001 // 17用二进制表示法
3. let octalInt = 0o21 //以八进制表示法为17
4. let hexadecimalInt = 0x11 // 17以十六进制表示法
类型别名
类型别名为现有类型定义备用名称。 您可以使用typealias关键字定义类型别名。
typlealias aInt = UInt16
定义类型别名后,您可以在任何可能使用原始名称的地方使用别名。
var bInt = a.min
// bInt现在为0
布尔值
Swift具有一个称为Bool的基本布尔类型。 布尔值被称为逻辑值,因为它们只能是true或false。 Swift提供了两个布尔常量值true和false :
让a = true
令b =假
元组
元组将多个值分组为一个复合值。 元组中的值可以是任何类型,而不必彼此相同。
让httpError =(404,“未找到”)
您可以从任何类型的排列创建元组,并且它们可以包含任意多的不同类型。 没有什么可以阻止您拥有(Int,Int,Int)或(String,Bool)的元组。
您可以将元组的内容分解为单独的常量或变量,然后像往常一样访问它们:
let(代码,错误)= httpError
print(code)//代码是404
print(error)//找不到错误
如果只需要一些元组的值,则在分解元组时,请用下划线(_)忽略元组的某些部分:
let(代码,_)= httpError
print(code)//代码是404
或者,使用从零开始的索引号访问元组中的各个元素值:
print(“状态代码为\(httpError.0)”)
//状态码为404。
打印(“状态消息为\(httpError.1)”)
//状态消息未找到。
定义元组时,可以命名元组中的各个元素:
让httpError =(状态代码:404,描述:“未找到”)
您可以使用元素名称来访问这些元素的值:
print(“状态代码为\(httpError.statusCode)”)
//状态码为404。
打印(“状态消息为\(httpError.description)”)
//状态消息未找到。
元组作为函数的返回值特别有用。 通过返回具有两个不同值(每个类型均不同)的元组,该函数提供的结果要比仅返回单个类型的单个值要有用得多。
选装件
在有值的情况下使用可选的。 可能不存在。 可选表示两种可能性:有值或根本没有值。
让strRollNo =“ 123”
让intRollNo = Int(strRollNo)
// intRollNo推断为“ Int?”或“ optional Int”类型
可选的Int编写为Int吗? 不是Int。 问号表示它包含的值是可选的,这意味着它包含一些Int值,或者可能根本不包含任何值。
Nil:通过为它分配特殊值nil,可以将一个可选变量设置为无值状态。
var a:整数? = 101
a = nil //现在不包含任何值
您可以使用if语句,通过将可选值与nil进行比较来找出可选值是否包含值。
如果一个!= nil {
打印(“ a包含一些整数值”)
}
//打印一个包含一些整数值的
强制解包:一旦确定可选内容确实包含一个值,就可以通过在可选名称的末尾添加一个感叹号(!)来访问其基础值。 感叹号有效地表示:“我知道此可选选项绝对有价值。 请使用它。”这称为可选值的强制展开 :
如果一个!= nil {
print(“ a的整数值为\(a!)”)
}
//打印“ a的中间值为101”
可选绑定:使用可选绑定可以找出可选对象是否包含值,如果可以,则将该值用作临时常量或变量。 可选绑定可以与if和while语句一起使用,以检查可选字段中的值,并将该值提取到常量或变量中,作为单个操作的一部分
如果让rollNo = Int(strRollNo){
打印(“实际编号:\(rollNo)”)
}其他{
print(“ strRollNo无法转换为整数”)
}
//打印实际编号为101
隐式展开的可选:有时,从程序结构中可以看出,可选总是会有一个值。
这些可选的种类定义为隐式展开的可选。 您通过放置感叹号(!)而不是问号(?)来编写隐式未包装的可选内容。
让strFirst:字符串吗? =“ ABCD”
让strSecond:字符串= strFirst! //需要一个感叹号
让strName:字符串! =“ ABCD”
let strName1:String = strName //不需要感叹号
错误处理
您可以使用错误处理来响应程序在执行过程中可能遇到的错误情况。
当函数遇到错误条件时,它将引发错误。 然后,该函数的调用方可以捕获错误并做出适当响应。
func canThrowAnError()引发{
//此函数可能会或可能不会引发错误
}
当您调用可能引发错误的函数时,请在表达式的前面加上try关键字。
做{
尝试canThrowAnError()
//没有抛出错误
} {
//由于引发了错误
}