Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active September 8, 2016 20:22
Show Gist options
  • Save KentarouKanno/f7d78a45b2b4a9aabf7363b9f91c3fa4 to your computer and use it in GitHub Desktop.
Save KentarouKanno/f7d78a45b2b4a9aabf7363b9f91c3fa4 to your computer and use it in GitHub Desktop.
Array + extension

Array + extension

import Foundation

extension Array where Element: Equatable {
    
    /// [Array + extension] 引数のElementを削除する、削除の成功失敗をBoolで返す
    mutating func e_remove(element element: Element) -> Bool {
        guard let index = indexOf(element) else { return false }
        removeAtIndex(index)
        return true
    }
    
    /// [Array + extension] 引数のElementsを配列から削除する
    mutating func e_remove(elements elements: [Element]) {
        for element in elements {
            e_remove(element: element)
        }
    }
}

// Array自身を書き換える
var intArray = [1, 2, 3, 4, 5]

intArray.e_remove(element: 2)
//=> [1, 3, 4, 5]

intArray.e_remove(elements: [2, 5])
//=> [1, 3]

★ 配列の中の要素を入れ替える

extension Array {
    mutating func arraySwapIndex(index1 index1: Int, index2: Int) {
        swap(&self[index1], &self[index2])
    }
}

var dic: [String] = ["a", "b", "c"]

dic.arraySwap(index1: 1, index2: 2)

dic
//=> ["a", "c", "b"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment