返回

Swift语法参考之类型!

IOS

对于 Swift 编程者而言,类型是语言的基本概念之一。它决定了变量、常量和表达式的值能够是什么。Swift 语言存在两种类型:命名型类型和复合型类型。

命名型类型

命名型类型是指定义时可以给定名字的类型。命名型类型包括类、结构体、枚举和协议。

类是创建对象的蓝图。它定义了对象的属性和方法。类还可以继承自其他类,从而复用代码。

class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

结构体

结构体是值类型,存储在栈上。结构体不能继承自其他结构体,但可以遵守协议。

struct Point {
    var x: Double
    var y: Double

    init(x: Double, y: Double) {
        self.x = x
        self.y = y
    }
}

枚举

枚举是值类型,表示一组相关值。枚举可以定义关联值,即与枚举值相关的数据。

enum CompassPoint {
    case north
    case south
    case east
    case west
}

协议

协议定义了类型必须实现的方法和属性。协议可以被类、结构体和枚举采用。

protocol Drawable {
    func draw()
}

复合型类型

复合型类型是由其他类型组合而成的类型。复合型类型包括数组、字典和集合。

数组

数组是有序值集合。数组中的值可以是任何类型。

var numbers = [1, 2, 3, 4, 5]

字典

字典是无序键值对集合。字典中的键可以是任何类型,值也可以是任何类型。

var capitals = ["China": "Beijing", "Japan": "Tokyo", "USA": "Washington D.C."]

集合

集合是无序值集合。集合中的值可以是任何类型。

var colors = Set(["red", "green", "blue"])

类型推断

Swift 编译器可以自动推断表达式的类型。这使得代码更加简洁和易读。

let number = 42
let name = "John"

类型转换

有时,需要将一种类型的值转换为另一种类型。可以使用类型转换运算符 (as) 和 as? 来进行类型转换。

let number = 42 as Double
let name = "John" as String?

类型别名

类型别名可以为现有类型创建一个新的名称。这使得代码更加简洁和易读。

typealias DoubleArray = [Double]
typealias PersonInfo = (name: String, age: Int)

类型检查

可以使用 isas? 运算符来检查值的类型。

if number is Double {
    // do something
}

if name as? String != nil {
    // do something
}

类型注释

类型注释可以显式指定变量、常量和表达式的类型。这有助于提高代码的可读性和可维护性。

var number: Double = 42
let name: String = "John"

总结

Swift 中的类型是语言的基本概念之一。它决定了变量、常量和表达式的值能够是什么。Swift 语言存在两种类型:命名型类型和复合型类型。命名型类型包括类、结构体、枚举和协议。复合型类型包括数组、字典和集合。