swift – 类内的变异函数
在
Swift中考虑这个类:
class Zombie: Monster { var walksWithLimp = true final override func terrorizeTown() { town?.changePopulation(-10) super.terrorizeTown() } func changeName(name: String,walksWithLimp: Bool) { self.name = name self.walksWithLimp = walksWithLimp } } Zombie继承了Monster类的名字字段. var name = "Monster" 为什么 fredTheZombie.changeName("Tom",walksWithLimp: true) 即使函数头之前没有变异关键字也可以工作? 解决方法
从
The Language Guide – Methods开始:
因此,我们需要包含关键字mutating以允许值类型的成员(例如函数?)改变其成员(例如结构的成员属性).变换值类型实例的成员意味着改变值类型实例本身(self),而改变引用类型实例的成员并不意味着引用类型实例(被认为是self)的引用被改变. 因此,由于类是Swift中的引用类型,我们不需要在Zombie类的任何实例方法中包含mutating关键字,即使它们改变了实例成员或类.如果我们要谈论改变实际的类实例fredTheZombie,我们会提到改变它的实际引用(例如指向另一个Zombie实例). [?]:作为另一个例子,我们可以使用例如变异的getters(get);在这种情况下,我们需要明确标记,因为默认情况下这些是非突变的.另一方面,Setters(set)默认是变异的,因此即使它们改变了值类型的成员也不需要变异关键字. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- nandflash移植,已做过,但是不是很理解,收录平常看着玩
- flexigrid获取选定的行列值
- [Swift]LeetCode146. LRU缓存机制 | LRU Cache
- flash – 1152:在命名空间public中继承的定义存在冲突
- dojox.grid.DataGrid 编程篇(2) -- 方法与事件
- ruby-on-rails – PG :: DependentObjectsStillExist:使用
- Gson基本操作,JsonObject,JsonArray,String,JavaBean,
- Postgresql:带有转义换行符的CSV导出
- 在U-boot中添加命令
- 11种主流NoSQL文档型数据