Swift - 数据类型



在任何编程语言中开发程序时,使用变量来存储数据是必要的。变量只不过是保留的内存位置来存储数据。这意味着当我们创建一个变量时,我们在内存中保留了一定数量的空间。

随后,当希望在变量中存储数据时,我们可以输入任何类型的数据,例如字符串、字符、宽字符、整数、浮点数、布尔值等。根据变量的数据类型,操作系统分配内存并决定可以在保留的内存中存储什么。

Swift 中的内置数据类型

Swift 为程序员提供了丰富的内置数据类型,也称为原始数据类型。它们表示基本值,并由 Swift 语言直接支持。Swift 提供七种内置数据类型,它们是:

数据类型名称 描述
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 表示布尔值,其值为真或假。
String 有序的字符集合。例如,“Hello, World!”
Character 单个字符字符串文字。例如,“C”
Optional 表示可以保存值或不保存值的变量。

边界值

下表显示了数据类型、在内存中存储值所需的内存量以及可以在此类变量中存储的最大值和最小值。

类型 典型位宽 典型范围
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 位)

Swift 中的用户定义数据类型

用户定义的数据类型允许我们根据需求创建自定义的数据类型。它们提供了更大的灵活性和抽象性。以下是 Swift 支持的一些用户定义的数据类型:

类型名称 描述
结构体 (struct) 它们是值类型;这意味着在程序中传递时可以复制它们。它们适合表示简单的数据结构。
它们是引用类型;这意味着它们作为引用传递。它们适合复杂的数据模型和对象。
枚举 (Enum) 用于定义一组相关的值。它们适合表示有限集。
协议 它们定义了方法和属性的蓝图,这对于特定任务或功能块很有用。

定义数据类型

定义数据类型是一个过程,在这个过程中,我们指定将在变量中存储什么类型的数据。众所周知,Swift 支持两种类型的数据——内置数据类型和用户定义的数据类型。因此,我们将看到如何定义内置数据类型:

语法

以下是内置数据类型的语法:

var name : dataType = Value

示例

定义内置数据类型:

var index : Int = 10
var str   : String = "Learn Swift!"
var char  : Character = "S"
var num   : Float = 23.45
var nums  : Double = 32.233434
var value : Bool = true

现在我们将看到如何定义用户定义的数据类型:

语法

以下是用户定义数据类型的语法:

struct Student {
   var name: String
   var age: Int
}

var myData = Student(name: "Mona", age: 23)

示例

定义内置用户定义数据类型:

// Structure	
struct Employee {
   var name: String
   var age: Int
}

// Structure data type
var myData = Employee(name: "Seema", age: 23)

// Class
class Student {
   var name: String
   var age: Int
    
   init(name: String, age: Int) {
      self.name = name
      self.age = age
   }
}

// Class data type
var myInfo = Student(name: "Alice", age: 25)

// Enumeration
enum Rectangle {
   case length, width, breadth
}

// Enum data type
var side: Rectangle = .length

Swift 中的类型安全

Swift 是一种类型安全的语言。这意味着如果程序中的变量期望一个字符串,则不能错误地传入整数,因为 Swift 在编译代码时执行类型检查,如果发现任何类型不匹配,则会显示错误消息。

但是,这并不意味着必须指定每个变量或常量的类型。Swift 应用类型推断,如果未显式指定变量或常量的类型,则会自动确定其类型。

示例

Swift 程序演示类型安全。

var varA = 42

// Here compiler will show an error message because varA 
// variable can only store integer type value
varA = "This is hello"

print(varA)

输出

main.swift:5:8: error: cannot assign value of type 'String' to type 'Int'
varA = "This is hello"

Swift 中的类型推断

类型推断是 Swift 语言的一项特殊功能;它允许编译器在编译时自动推断给定表达式的类型。这意味着不需要在声明时显式定义变量的类型,Swift 仍然会提供字符串类型安全。

当声明具有初始值的常量或变量时,它非常有用。

示例

Swift 程序演示类型推断。

import Foundation

// varA is inferred to be of type Int
var varA = 42
print("Type of varA variable is:", type(of:varA))

// varB is inferred to be of type Double
var varB = 3.14159
print("Type of varB variable is:", type(of:varB))

// varC is also inferred to be of type String
var varC = "TutorialsPoint"
print("Type of varC variable is:", type(of:varC))

输出

Type of varA variable is: Int
Type of varB variable is: Double
Type of varC variable is: String
广告