Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

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
    }
}

かなり色々なことが凝集されてるんですが、説明をするほど理解できていると思えないんで眺めるだけにします。

今日はお休みなんでこれだけ。