在 Swift 中,结构体(Structures)是一种用于封装和组织代码的数据类型。结构体允许你创建一个具有属性和方法的自定义数据类型,它是值类型,与类相比,结构体的实例在传递和赋值时是被拷贝的。

以下是关于 Swift 结构体的基本信息和使用方法:

结构体的定义
// 简单的结构体定义
struct Point {
    var x: Double
    var y: Double
}

// 结构体的实例
var origin = Point(x: 0.0, y: 0.0)

结构体的属性和方法
struct Rectangle {
    var width: Double
    var height: Double
    
    // 计算属性
    var area: Double {
        return width * height
    }
    
    // 方法
    func description() {
        print("Rectangle: width = \(width), height = \(height)")
    }
}

var rect = Rectangle(width: 10.0, height: 5.0)
print("Area: \(rect.area)")
rect.description()

结构体的初始化器

结构体默认提供一个逐一成员初始化器,你也可以自定义初始化器:
struct Size {
    var width: Double
    var height: Double
    
    // 自定义初始化器
    init(width: Double, height: Double) {
        self.width = width
        self.height = height
    }
}

let size = Size(width: 3.0, height: 4.0)

结构体的值类型特性

结构体是值类型,这意味着当你将结构体赋值给新的常量或变量,或者将结构体传递给函数或方法时,其值会被复制:
var size1 = Size(width: 2.0, height: 3.0)
var size2 = size1  // size1 的值被复制到 size2
size1.width = 5.0

print("size1 width: \(size1.width)")  // 输出 5.0
print("size2 width: \(size2.width)")  // 输出 2.0

结构体和类的比较

结构体和类有相似的语法,但它们有一些关键的区别。主要的区别在于值类型与引用类型,以及结构体是值拷贝,而类是引用拷贝。
struct ValueType {
    var value: Int
}

class ReferenceType {
    var value: Int = 0
}

var x = ValueType(value: 10)
var y = x
x.value = 20

print("x.value: \(x.value)")  // 输出 20
print("y.value: \(y.value)")  // 输出 10

var a = ReferenceType()
var b = a
a.value = 30

print("a.value: \(a.value)")  // 输出 30
print("b.value: \(b.value)")  // 输出 30

以上是一些关于 Swift 结构体的基本用法。结构体适用于简单的数据结构,它们的值被复制,适用于不需要共享状态的情况。


转载请注明出处:http://www.zyzy.cn/article/detail/14427/Swift