Swift Protocols
Describe the behaviour a consumer needs without requiring a shared superclass.
How it works
A protocol states properties and methods a conforming type supplies. A generic consumer can preserve the concrete type while depending only on the required operations. Keep protocols focused on a useful contract rather than copying every member of a large class into an interface.
Run this Swift example
Install the toolchain for your platform from Swift.org, then check swift --version. The reviewed portable baseline is Swift 6.4.2 in Swift 6 mode on Ubuntu 26.04 x86_64 through the PC’s existing WSL installation. These are real Linux executions, not claims of Windows-native or Apple-platform test results. Windows Swift has separate C++/SDK prerequisites in its official setup guide.
Save the complete source as protocols.swift in a new learning folder. On Linux/macOS compile with swiftc -swift-version 6 -parse-as-library protocols.swift -o lesson, then run ./lesson. On a configured Windows toolchain use an output such as lesson.exe and run .\lesson.exe. The parse-as-library option supports the explicit @main entry point used by these sources. Compile each ordinary lesson separately.
Bhylu has no Swift browser runner. The JavaScript/Python editors do not run these sources; Apache, PHP and MySQL are not required. Downloads are source text, never executable teaching endpoints.
Download the complete protocols.swift · Download all source files with hash checks
For the optional collection, save download-examples.mjs in a new folder and run node download-examples.mjs. A local preview uses node download-examples.mjs http://127.0.0.1:8000/examples/swift/. It refuses an existing bhylu-swift-examples folder and installs or executes no Swift automatically. Apple-only files remain separate Xcode learning examples, not a portable Swift package target.
Example
protocol PickupPoint { var pickupLabel: String { get } }
struct CollectionDesk: PickupPoint {
let room: String
var pickupLabel: String { "Collect from \(room)" }
}
func notice<T: PickupPoint>(for point: T) -> String { point.pickupLabel }
@main
struct Lesson {
static func main() {
print(notice(for: CollectionDesk(room: "Cedar")))
}
}
Expected result
Collect from Cedar
The generic function accepts any conforming value and reads its pickupLabel. The struct has its own state representation. This is a source-level behaviour contract, not proof that every implementation will satisfy an unstated business policy.
Primary references: The Swift Programming Language and Apple framework documentation. Use the selected platform’s current requirements. Fictional workshop examples do not establish production safety or deployment approval.