Protocols
Protocol Basics
A protocol names behavior or data that conforming types must provide.
Conform to a shape
protocol_basics.swift
Replay: real traced execution (multi-file project)
protocol Named {
var name: String { get }
}
struct Student: Named {
let name: String
}
let studentName = "Mina"
let student = Student(name: studentName)
let label = "student=\(student.name)"
print(label)
protocol Named {
var name: String { get }
}
struct Student: Named {
let name: String
}
let studentName = "Kai"
let student = Student(name: studentName)
let label = "student=\(student.name)"
print(label)
protocol Named {
var name: String { get }
}
struct Student: Named {
let name: String
}
let studentName = "Ari"
let student = Student(name: studentName)
let label = "student=\(student.name)"
print(label)
studentName ← Mina, student ← Student(name: "Mina"), label ← student=Mina
9let studentName→ Mina = "Mina" //@studentName="Kai", "Ari"10let student→ Student(name: "Mina") = Student(name: studentNameMina)11let label→ student=Mina = "student=\(student.nameMina)"1213print(labelstudent=Mina)outputstudent=Mina
studentName ← Kai, student ← Student(name: "Kai"), label ← student=Kai
9let studentName→ Kai = "Kai"10let student→ Student(name: "Kai") = Student(name: studentNameKai)11let label→ student=Kai = "student=\(student.nameKai)"1213print(labelstudent=Kai)outputstudent=Kai
studentName ← Ari, student ← Student(name: "Ari"), label ← student=Ari
9let studentName→ Ari = "Ari"10let student→ Student(name: "Ari") = Student(name: studentNameAri)11let label→ student=Ari = "student=\(student.nameAri)"1213print(labelstudent=Ari)outputstudent=Ari
protocol
A type conforms to a protocol by providing the required members.