官术网_书友最值得收藏!

Method requirements

A protocol can require that the conforming types provide specific methods. These methods are defined within the protocol exactly as we define them within a class or structure, but without the curly brackets and method body. We can define that these methods are instance or type methods using the static keyword. Adding default values to the method's parameters is not allowed when defining the method within a protocol.

Let's add a method named getFullName() to the FullName protocol:

protocol FullName { 
  var firstName: String {get set}  
  var lastName: String {get set} 
 
  func getFullName() -> String 
} 

The fullName protocol now requires one method named getFullName() and two read-write properties named firstName and lastName.

For value types, such as the structure, if we intend for a method to modify the instances that it belongs to, we must prefix the method definition with the mutating keyword. This keyword indicates that the method is allowed to modify the instance it belongs to. The following example shows how to use the mutating keyword with a method definition:

mutating func changeName() 

If we mark a method requirement as mutating, we do not need to write the mutating keyword for that method when we adopt the protocol with a reference (class) type. The mutating keyword is only used with value (structures or enumerations) types.

主站蜘蛛池模板: 南江县| 九江县| 南漳县| 丹东市| 巴塘县| 银川市| 西乌珠穆沁旗| 泊头市| 钟祥市| 柳江县| 永川市| 克什克腾旗| 马尔康县| 桂阳县| 贵港市| 合作市| 千阳县| 绥棱县| 静海县| 响水县| 菏泽市| 苍南县| 平舆县| 登封市| 新河县| 石渠县| 东台市| 临潭县| 阜宁县| 会泽县| 长沙县| 临朐县| 民勤县| 祥云县| 恩施市| 镇宁| 闽侯县| 科技| 东莞市| 巍山| 鹤峰县|