Skip to content

Instantly share code, notes, and snippets.

@richy486
Created December 21, 2015 20:51
Show Gist options
  • Save richy486/31912a7e35da61e385c8 to your computer and use it in GitHub Desktop.
Save richy486/31912a7e35da61e385c8 to your computer and use it in GitHub Desktop.
Playing with Protocols as Types
// https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html
print("Brick maker!")
// for testing on http://swiftlang.ng.bluemix.net/
typealias CGFloat = Float
struct CGPoint {
var x: CGFloat
var y: CGFloat
}
protocol BrickMaker {
func MakeBrick()
}
class LeftBrickMaker: BrickMaker {
func MakeBrick() {
print("made a left brick")
}
}
class RightBrickMaker: BrickMaker {
func MakeBrick() {
print("made a right brick")
}
}
class Brick {
let position: CGPoint
let maker: BrickMaker
init(position: CGPoint, maker: BrickMaker) {
self.position = position
self.maker = maker
}
func DrawBrick() {
self.maker.MakeBrick()
}
}
var lBrick = Brick(position: CGPoint(x: 0, y: 0), maker: LeftBrickMaker())
lBrick.DrawBrick()
var rBrick = Brick(position: CGPoint(x: 0, y: 0), maker: RightBrickMaker())
rBrick.DrawBrick()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment