Swift中protocol的关键字笔记
程序员文章站
2024-01-03 09:46:04
一、mutating mutating 关键字的作用是为了能在该方法中修改 struct 或是 enum 的变量,在类中实现协议方法不用写mutating关键字 protocol ExampleProtocol { var simpleDescription: String { get } muta ......
一、mutating
mutating 关键字的作用是为了能在该方法中修改 struct 或是 enum 的变量,在类中实现协议方法不用写mutating关键字
protocol exampleprotocol { var simpledescription: string { get } mutating func adjust() mutating func newtest() } class simpleclass: exampleprotocol { var simpledescription: string = "a very simple class." var anotherproperty: int = 69105 func adjust() { simpledescription += " now 100% adjusted." } func newtest() { print("jiacheng - simpleclass -> exampleprotocol -> newtest") } }
在枚举(enum)和机构体(struct)中遵守协议时,如果在实现方法中改变了自己的变量,则方法的声明和实现都需要加mutating关键字,否则会报错;如果没有改变变量,则不需要加mutating关键字。
二、swift和oc中protocol的差异
1. oc中的协议只能在类中实现,而swift中的协议既可在类中实现,也可在枚举和机构体中实现;
2. oc的协议方法有可选关键字,swift没有,因此在swift中想给协议方法添加可选关键字,则必须给protocol添加@obj关键字,声明这是个oc协议;
3. 枚举和结构体无法实现添加@obj关键字的协议,该协议方法也无法添加mutating关键字。
推荐阅读
-
Swift中protocol的关键字笔记
-
PHP中的cURL请求及示例学习笔记
-
关于PHP中Object对象的笔记分享_PHP
-
PHP中面向对象的关键字,php面向对象关键字_PHP教程
-
图解JavaScript中的this关键字_javascript技巧
-
C#中dynamic关键字的正确用法(推荐)
-
开发笔记 - 解决font-awesome等图标在浏览器中的兼容问题
-
php学习笔记 php中面向对象三大特性之一[封装性]的应用_PHP教程
-
php类中的$this,static,final,const,self这几个关键字使用方法_php实例
-
JAVASE 小白学习笔记 (12-3)Java中的常用类--StringBuffer类、StringBuilder类