protocol Greetable {
var name: String { get }
func greet() -> String
}
struct Visitor: Greetable {
var name: String
func greet() -> String { "Hello, I'm \(name), a visitor." }
}
class Employee: Greetable {
var name: String
init(name: String) { self.name = name }
func greet() -> String { "Hi, I'm \(name), staff." }
}
let people: [Greetable] = [Visitor(name: "Lee"), Employee(name: "Kim")]
for person in people {
print(person.greet())
}