u16suzuの blog

u16suzu のブログです。

swiftのジェネリクスを使ってみる

    // ジェネリクス関数
    func swapAnyObject<T>(a:T, b:T){
        print( a.dynamicType, b.dynamicType)
    }

    // ジェネリクス関数その2
    // http://qiita.com/mini_house/items/73cefa9612d5c7680d7e より
    func myRepeat<ItemType>(item: ItemType, times: Int) -> [ItemType]{
        var result = [ItemType]()
        
        for _ in 0...times {
            result.append(item)
        }
        return result
    }
    
    
    // 型制約の例 Tを Equatable protocol を採用したクラスに制限している
    // http://qiita.com/mini_house/items/73cefa9612d5c7680d7e より
    func findIndex<T: Equatable>(array: [T], valueToFind: T) -> Int? {
        for (i,v) in array.enumerate() {
            if v == valueToFind {
                return i
            }
        }
        return nil
    }