栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

类内部的变异函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

类内部的变异函数

从语言指南-
方法中

从实例方法中修改值类型

结构和枚举是 类型。默认情况下,不能从其实例方法中修改值类型的属性。

但是,如果需要在特定方法中修改结构或枚举的属性,则可以选择对该方法进行行为更改。然后,该方法可以从方法内部更改(即更改)其属性,并在方法结束时将其所做的任何更改写回到原始结构。该方法还可以为其隐式

self

属性分配一个全新的实例,并且该新实例将在方法结束时替换现有实例。

您可以通过将

mutating
关键字放在该方法的func关键字之前来选择这种行为…

因此,我们需要包含关键字

mutating
以允许
类型的成员(例如函数†)对其成员进行变异(例如a的成员属性)。对值类型实例的成员进行突变意味着对值类型实例本身()进行突变,而对 引用
类型实例的成员进行突变并不意味着对引用类型实例(被视为)的引用进行了突变。
struct``self
self

因此,由于a

class
是Swift中的引用类型,因此即使类中的实例成员或类发生突变,我们也无需
mutating
Zombie
该类的任何实例方法中都包含关键字。如果我们要说的是改变实际的类实例
fredTheZombie
,我们将提到改变其实际
引用 (例如指向另一个
Zombie
实例)。

[†]:作为另一个示例,我们可以使用例如

mutating
getters(
get
);
在这种情况下,我们需要对此进行显式标记,因为
nonmutating
默认情况下是这些标记。
set
另一方面,Setters()是
mutating
默认设置,因此
mutating
即使它们使值类型的成员发生突变,也不需要关键字。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401503.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号