前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift入门:结构体

Swift入门:结构体

作者头像
韦弦zhy
发布2020-03-19 20:47:39
4250
发布2020-03-19 20:47:39
举报
\color{red}{\Huge \mathtt{SWIFT}}
\color{red}{\Huge \mathtt{SWIFT}}
\color{orange}{\Large \mathbf{结构体}}
\color{orange}{\Large \mathbf{结构体}}
\underline{\color{#3399CC}{\large \mathit{Structs}}}
\underline{\color{#3399CC}{\large \mathit{Structs}}}

结构体是复杂的数据类型,这意味着它们由多个值组成。然后创建结构的实例并填充其值,然后可以在代码中将其作为单个值传递。例如,我们可以定义一个Person结构体类型,它包含两个属性:clothesshoes

代码语言:javascript
复制
struct Person {
    var clothes: String
    var shoes: String
}

当您定义一个结构体时,Swift使它们很容易创建,因为它会自动生成所谓的成员初始化器。简单地说,这意味着您可以通过为结构的两个属性传入初始值来创建结构体,如下所示:

代码语言:javascript
复制
let taylor = Person(clothes: "T-shirts", shoes: "sneakers")
let other = Person(clothes: "short skirts", shoes: "high heels")

一旦创建了结构体的实例,就可以通过写入结构体的名称、点.和要读取的属性名称来读取其属性:

代码语言:javascript
复制
print(taylor.clothes)
print(other.shoes)

如果将一个结构指定给另一个结构,Swift会在幕后复制它,以便它是原始结构的完整独立副本。好吧,严格来说这不是真的:Swift使用了一种叫做“写时复制”的技术,这意味着它只在你试图更改数据时才实际拷贝你的数据。

为了帮助您了解结构体副本的工作原理,请将这段代码放入您的playground:

代码语言:javascript
复制
struct Person {
    var clothes: String
    var shoes: String
}

let taylor = Person(clothes: "T-shirts", shoes: "sneakers")
let other = Person(clothes: "short skirts", shoes: "high heels")

var taylorCopy = taylor
taylorCopy.shoes = "flip flops"

print(taylor)
print(taylorCopy)

这将创建两个Person结构体,然后创建第三个称为taylorCopy的结构体作为taylor的副本。接下来发生的是有趣的部分:代码改变了taylorCopy,并同时打印了它和taylor。如果您在结果窗口中查看,您将看到副本与原始结构体具有不同的值:更改一个副本不会更改另一个。

结构体内的函数

您可以将函数放在结构体中,事实上,对于读取或更改结构体中数据的所有函数,这样做是一个好主意。例如,我们可以在Person结构体中添加一个函数来描述他们的穿着,例如:

代码语言:javascript
复制
struct Person {
    var clothes: String
    var shoes: String

    func describe() {
        print("I like wearing \(clothes) with \(shoes)")
    }
}

还有一件事你应该知道,但在代码中看不到:当你在一个结构体中编写一个函数时,它被称为一个方法。在Swift中,无论是函数还是方法,您都可以编写func,但是当您谈到它们时,它们之间的区别会被保留下来。

本文来自Hacking with Swift 给 swift 初学者的入门课程 Swift for Complete Beginners Structs

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 结构体内的函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档