Skip to content

Instantly share code, notes, and snippets.

@numist
Created July 31, 2015 06:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save numist/37d3af2031d549402aab to your computer and use it in GitHub Desktop.
Save numist/37d3af2031d549402aab to your computer and use it in GitHub Desktop.
Feed and Folder protocols with a couple of concrete implementations in the spirit of http://inessential.com/2015/07/19/secret_projects_diary_2_swift_2_0_prot
func ==<T:Feed>(lhs: T, rhs: T) -> Bool {
return lhs.link == rhs.link
}
protocol Feed : Equatable {
var link : String {get}
}
protocol Folder {
typealias FeedType: Feed
var feeds: [FeedType] {get}
func addFeeds(feedsToAdd: [FeedType])
}
class LocalFeed : Feed {
var link = "asdf"
}
class LocalFolder : Folder {
typealias FeedType = LocalFeed
var feeds: [FeedType] = []
func addFeeds(feedsToAdd: [FeedType]) {
for feed in feedsToAdd {
self.feeds.insert(feed, atIndex:0)
}
}
}
class FeedBinFeed : Feed {
var link = "aoeu"
}
class FeedBinFolder : Folder {
typealias FeedType = FeedBinFeed
var feeds: [FeedType] = []
func addFeeds(feedsToAdd: [FeedType]) {
for feed in feedsToAdd {
self.feeds.insert(feed, atIndex:0)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment