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位平台上, IntInt32的大小相同。 
在64位平台上, IntInt64相同。

UInt: Swift还提供了一个无符号整数类型的UInt ,其大小与当前平台的本机字大小相同。

 在32位平台上, UIntUInt32大小相同。 
在64位平台上, UIntUInt64相同。

浮点数字

与整数类型相比,浮点类型可以表示更大范围的值,并且可以存储可以存储在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提供了两个布尔常量值truefalse

 让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”

可选绑定:使用可选绑定可以找出可选对象是否包含值,如果可以,则将该值用作临时常量或变量。 可选绑定可以与ifwhile语句一起使用,以检查可选字段中的值,并将该值提取到常量或变量中,作为单个操作的一部分

 如果让rollNo = Int(strRollNo){ 
打印(“实际编号:\(rollNo)”)
}其他{
print(“ strRollNo无法转换为整数”)
}
  //打印实际编号为101 

隐式展开的可选:有时,从程序结构中可以看出,可选总是会有一个值。
这些可选的种类定义为隐式展开的可选。 您通过放置感叹号(!)而不是问号(?)来编写隐式未包装的可选内容。

 让strFirst:字符串吗?  =“ ABCD” 
让strSecond:字符串= strFirst! //需要一个感叹号
 让strName:字符串!  =“ ABCD” 
let strName1:String = strName //不需要感叹号

错误处理

您可以使用错误处理来响应程序在执行过程中可能遇到的错误情况。
当函数遇到错误条件时,它将引发错误。 然后,该函数的调用方可以捕获错误并做出适当响应。

  func canThrowAnError()引发{ 
//此函数可能会或可能不会引发错误
}

当您调用可能引发错误的函数时,请在表达式的前面加上try关键字。

 做{ 
尝试canThrowAnError()
//没有抛出错误
} {
//由于引发了错误
}