📜  Swift-数据类型

📅  最后修改于: 2020-12-25 04:22:34             🧑  作者: Mango


在以任何一种编程语言进行编程时,您需要使用不同类型的变量来存储信息。变量不过是用于存储值的保留内存位置。这意味着在创建变量时,将在内存中保留一些空间。

您可能希望存储各种数据类型的信息,例如字符串,字符,宽字符,整数,浮点数,布尔值等。操作系统根据变量的数据类型分配内存,并确定可以在保留的数据中存储什么记忆。

内置数据类型

Swift 4为程序员提供了丰富的内置以及用户定义的数据类型。声明变量时,以下类型的基本数据类型最常见-

  • Int或UInt-用于整数。更具体地说,可以使用Int32,Int64定义32或64位有符号整数,而UInt32或UInt64定义32或64位无符号整数变量。例如42和-23。

  • 浮点数-用于表示32位浮点数和带有较小小数点的数字。例如,3.14159、0.1和-273.158。

  • Double-用于表示64位浮点数,当浮点值必须非常大时使用。例如,3.14159、0.1和-273.158。

  • 布尔-这表示布尔值,为true或false。

  • 字符串-这是字符的有序集合。例如,“你好,世界!”

  • 字符-这是一个单字符字符串字面量。例如,“ C”

  • 可选-这表示一个可以保存值或不包含值的变量。

  • 元组-用于将多个值分组为单个“复合值”。

我们在这里列出了一些与整数类型有关的要点-

  • 在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位无符号整数形式。

界值

下表显示了变量类型,将值存储在内存中需要多少内存以及可以在此类变量中存储的最大值和最小值是多少。

Type Typical Bit Width Typical Range
Int8 1byte -127 to 127
UInt8 1byte 0 to 255
Int32 4bytes -2147483648 to 2147483647
UInt32 4bytes 0 to 4294967295
Int64 8bytes -9223372036854775808 to 9223372036854775807
UInt64 8bytes 0 to 18446744073709551615
Float 4bytes 1.2E-38 to 3.4E+38 (~6 digits)
Double 8bytes 2.3E-308 to 1.7E+308 (~15 digits)

类型别名

您可以使用typealias为现有类型创建新名称。这是使用typealias定义新类型的简单语法-

typealias newname = type

例如,以下行指示编译器FeetInt的另一个名称-

typealias Feet = Int

现在,以下声明完全合法,并创建了一个名为distance的整数变量-

typealias Feet = Int
var distance: Feet = 100
print(distance)

当我们在操场上运行上述程序时,得到以下结果。

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)

当我们使用游乐场运行上述程序时,我们得到以下结果-

42
3.14159
3.14159