Swift 数据类型
在任何编程语言中进行编程时,您需要使用不同类型的变量来存储信息。变量只是保留的内存位置,用于存储值。这意味着当您创建一个变量时,您在内存中保留一些空间。
您可能希望存储各种数据类型的信息,例如字符串,字符,宽字符,整数,浮点数,布尔值等。根据变量的数据类型,操作系统将分配内存并决定可以存储哪些值在保留的内存中。
内建数据类型
Swift 4为编程人员提供了丰富多样的内建和用户定义的数据类型。当声明变量时,通常使用以下类型的基本数据类型-
- Int或UInt - 用于表示整数。更具体地说,您可以使用Int32,Int64来定义32位或64位的有符号整数,而使用UInt32或UInt64来定义32位或64位的无符号整数变量。例如,42和-23。
-
Float - 用于表示32位浮点数和具有较小小数点的数字。例如,3.14159,0.1和-273.158。
-
Double - 用于表示64位浮点数,用于表示非常大的浮点值。例如,3.14159,0.1和-273.158。
-
Bool - 表示布尔值,可以是true或false。
-
String - 有序的字符集合。例如,”Hello, World!”
-
Character - 单个字符的字符串文字。例如,”C”
-
Optional - 表示可以容纳值或无值的变量。
-
Tuples - 用于将多个值组合成单个复合值。
下面列出了一些与整数类型相关的重要要点-
- 在32位平台上,Int与Int32的大小相同。
-
在64位平台上,Int与Int64的大小相同。
-
在32位平台上,UInt与UInt32的大小相同。
-
在64位平台上,UInt与UInt64的大小相同。
-
Int8、Int16、Int32和Int64可以用来表示有符号整数的8位、16位、32位和64位形式。
-
UInt8、UInt16、UInt32和UInt64可以用来表示无符号整数的8位、16位、32位和64位形式。
边界值
以下表格显示了变量类型、存储该值所需的内存大小以及该类型变量中可以存储的最大值和最小值。
类型 | 典型的位宽 | 典型的范围 |
---|---|---|
Int8 | 1字节 | -127到127 |
UInt8 | 1字节 | 0到255 |
Int32 | 4字节 | -2147483648到2147483647 |
UInt32 | 4字节 | 0到4294967295 |
Int64 | 8字节 | -9223372036854775808到9223372036854775807 |
UInt64 | 8字节 | 0到18446744073709551615 |
Float | 4字节 | 1.2E-38到3.4E+38(约6位有效数字) |
Double | 8字节 | 2.3E-308到1.7E+308(约15位有效数字) |
类别别名
您可以使用 typealias 为现有的类型创建一个新名称。以下是使用typealias定义新类型的简单语法:
typealias newname = type
例如,下面的这行代码告诉编译器, Feet 是 Int 的别名 −
typealias Feet = Int
现在,以下声明是完全合法的并创建一个名为distance的整数变量 –
typealias Feet = Int
var distance: Feet = 100
print(distance)
当我们在playground上运行上述程序时,我们得到以下结果。
100
类型安全
Swift 4是一种类型安全的语言,这意味着如果你的代码的某个部分期望一个字符串(String),你不能因为错误而传递一个整数(Int)。
由于Swift 4是类型安全的,它在编译代码时执行类型检查,并将任何类型不匹配的情况标记为错误。
var varA = 42
varA = "This is hello"
print(varA)
当我们编译上述程序时,会产生以下编译时错误。
main.swift:2:8: error: cannot assign value of type 'String' to type 'Int'
varA = "This is hello"
类型推断
类型推断使得编译器能够在编译代码时通过检查提供的值来自动推断特定表达式的类型。Swift 4 使用类型推断来确定适当的类型,如下所示。
// varA is inferred to be of type Int
var varA = 42
print(varA)
// varB is inferred to be of type Double
var varB = 3.14159
print(varB)
// varC is also inferred to be of type Double
var varC = 3 + 0.14159
print(varC)
当我们在playground上运行上述程序时,我们得到以下结果 –
42
3.14159
3.14159