Protocols
Method Requirements
Protocols can require conforming types to implement methods.
Require a method
method_requirements.swift
Replay: real traced execution (multi-file project)
protocol Summarizable {
func summary() -> String
}
struct Ticket: Summarizable {
let id: Int
let owner: String
func summary() -> String {
return "#\(id) \(owner)"
}
}
let ticketId = 42
let ticket = Ticket(id: ticketId, owner: "Ada")
let summary = ticket.summary()
print(summary)
protocol Summarizable {
func summary() -> String
}
struct Ticket: Summarizable {
let id: Int
let owner: String
func summary() -> String {
return "#\(id) \(owner)"
}
}
let ticketId = 7
let ticket = Ticket(id: ticketId, owner: "Ada")
let summary = ticket.summary()
print(summary)
protocol Summarizable {
func summary() -> String
}
struct Ticket: Summarizable {
let id: Int
let owner: String
func summary() -> String {
return "#\(id) \(owner)"
}
}
let ticketId = 105
let ticket = Ticket(id: ticketId, owner: "Ada")
let summary = ticket.summary()
print(summary)
ticketId ← 42, ticket ← Ticket(id: 42, owner: "Ada")
14let ticketId→ 42 = 42 //@ticketId=7, 10515let ticket→ Ticket(id: 42, owner: "Ada") = Ticket(id: ticketId42, owner: "Ada")16let summary = ticketTicket(id: 42, owner: "Ada").summary()func summary() -> String
9func summary() -> String {10 return "#\(id42) \(ownerAda)"11}summary ← #42 Ada
15let ticket = Ticket(id: ticketId, owner: "Ada")16let summary→ #42 Ada = ticketTicket(id: 42, owner: "Ada").summary()1718print(summary#42 Ada)output#42 Ada
ticketId ← 7, ticket ← Ticket(id: 7, owner: "Ada")
14let ticketId→ 7 = 715let ticket→ Ticket(id: 7, owner: "Ada") = Ticket(id: ticketId7, owner: "Ada")16let summary = ticketTicket(id: 7, owner: "Ada").summary()func summary() -> String
9func summary() -> String {10 return "#\(id7) \(ownerAda)"11}summary ← #7 Ada
15let ticket = Ticket(id: ticketId, owner: "Ada")16let summary→ #7 Ada = ticketTicket(id: 7, owner: "Ada").summary()1718print(summary#7 Ada)output#7 Ada
ticketId ← 105, ticket ← Ticket(id: 105, owner: "Ada")
14let ticketId→ 105 = 10515let ticket→ Ticket(id: 105, owner: "Ada") = Ticket(id: ticketId105, owner: "Ada")16let summary = ticketTicket(id: 105, owner: "Ada").summary()func summary() -> String
9func summary() -> String {10 return "#\(id105) \(ownerAda)"11}summary ← #105 Ada
15let ticket = Ticket(id: ticketId, owner: "Ada")16let summary→ #105 Ada = ticketTicket(id: 105, owner: "Ada").summary()1718print(summary#105 Ada)output#105 Ada
method requirement
A method requirement describes the method signature that each conforming type must implement.