Swift 类和结构体

结构体和类的声明 以及实例化

import UIKit

// 结构体和类的声明
struct Resolution {
    var width = 0
    var height = 0
}

class VideoMode {
    var resolution = Resolution()
    var interlaced = false
    var frameRate = 0.0
    var name: String?
}


// 结构体和类的实例化
let someResolution = Resolution()
let someVideoMode = VideoMode()

属性的访问

// 访问属性
print("The width of someResolution is \(someResolution.width)")

print("The width of someVideMode is \(someVideoMode.resolution.width)")

someVideoMode.resolution.width = 1280
print("The width of someVideMode is now \(someVideoMode.resolution.width)")

console log 如下


类和结构体属性访问.png

结构体是值拷贝

// 结构体是值拷贝
let vga = Resolution(width: 640, height: 480)
var cinema = vga
cinema.height = 960

print("cinema is now \(cinema.height) pixels height")
print("vga is still \(vga.height) pixels height")

console log 如下


结构体是值拷贝.png

枚举也是值拷贝

// 枚举也是值拷贝
enum CompassPoint {
    case notth, south, east, west
}

var currentDirection = CompassPoint.west
let rememberedDirection = currentDirection
currentDirection = .east
if rememberedDirection == .west {
    print("The remembered direction is still .west")
}

console log 如下


枚举也是值拷贝.png

类是引用类型

// 类是引用类型
let tenEighty = VideoMode()
tenEighty.resolution = vga
tenEighty.interlaced = true
tenEighty.name = "1080i"
tenEighty.frameRate = 25.0

let alsoTenEighty = tenEighty
alsoTenEighty.frameRate = 30.0

print("The frameRate property of tenEighty is now \(tenEighty.frameRate)")

console log 如下


类是引用类型.png

=== 或者 !== 运算符

// === 运算符 或者 !==
if tenEighty === alsoTenEighty {
    print("tenEighty and alsoTenEighty refre to the same VideoMode instance")
}

console log 如下


类同一个引用的运算符.png

注意:在Swift 中String,Array,Dictionary 都是作为结构体实现的,也就是在赋值时以及作为函数参数时都是进行的值拷贝

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 类和结构体是人们构建代码所用的一种通用且灵活的构造体。我们可以使用完全相同的语法规则来为类和结构体定义属性(常量、...
    穷人家的孩纸阅读 330评论 0 2
  • 类和结构体是构建代码所用的一种通用的构造体。都是可以使用完全相同的语法规则为类和结构体定义属性(常量、变量)、添加...
    EndEvent阅读 533评论 1 7
  • 类和结构体是通用的,灵活的结构,成为程序代码的基础。 您可以通过使用与常量,变量和函数完全相同的语法来定义属性和方...
    Joker_King阅读 328评论 0 0
  • 类和结构体 struct Resolution{ var width = 0; var height = 0; }...
    FengxinLi阅读 160评论 0 0
  • 类是引用类型 类是引用类型,结构体和枚举是值类型 特征运算符 为了比较两个类实例是否是同一个实例,引入===和!=...
    labourer阅读 121评论 0 0