Created
July 31, 2015 06:41
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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