Swiftで遊ぼう! - 719 - Protocol-Oriented Programmingを考える
Protocolからプログラミングをする方法として次のような例が載っていました。
protocol Ordered { func precedes(other: Self) -> Bool } struct Number: Ordered { var value: Double = 0 func precedes(other: Number) -> Bool { return self.value < other.value } func binarySearch<T: Ordered>(sortedKeys: [T], forKey k: T) -> Int { var lo = 0 var hi = sortedKeys.count while hi > lo { let mid = lo + (hi - lo) / 2 if sortedKeys[mid].precedes(other: k) { lo = mid + 1 } else { hi = mid } } return lo } }
かなり色々なことが凝集されてるんですが、説明をするほど理解できていると思えないんで眺めるだけにします。
今日はお休みなんでこれだけ。