LoginSignup
3
3

More than 5 years have passed since last update.

[Swift]Filterしたタプルの配列を返すメソッド

Last updated at Posted at 2015-09-11

やること

  1. タプルの配列を返すメソッド作成
  2. 引数で指定した文字列を条件に、Filterしたタプルの配列を返す

メソッド

filterTuple
/**
 *  指定した刀派の刀剣男士をタプルの配列で返す
 *
 *  @param  Faction 刀派
 *
 *  @return 指定した刀派の刀剣男士
 **/
func selectFaction(Faction: String) -> [(rare: Int, name: String, faction: String)] {

    let toukenKnights: [(rare: Int, name: String, faction: String)] = [
        (5, "三日月宗近", "三条"),
        (3, "小狐丸",    "三条"),
        (3, "石切丸",    "三条"),
        (3, "岩融",      "三条"),
        (1, "今剣",      "三条"),
        (4, "鶯丸",      "古備前"),
        (3, "明石国行",   "来"),
        (4, "蛍丸",      "来"),
        (1, "愛染国俊",   "来")
    ]

    var factionKnights:[(rare: Int, name: String, faction: String)] = toukenKnights.filter({$0.faction == Faction})

    return factionKnights
}

実装例

filterTuple
    override func viewDidLoad() {
        super.viewDidLoad()

        var sanjo:[(rare: Int, name: String, faction: String)] = selectFaction("三条")
        println(sanjo[0].name)   // 三日月宗近
        println(sanjo[1].name)   // 小狐丸
        println(sanjo[2].name)   // 石切丸
        println(sanjo[3].name)   // 岩融
        println(sanjo[4].name)   // 今剣

        var kobizen:[(rare: Int, name: String, faction: String)] = selectFaction("古備前")
        println(kobizen)         // [(4, 鶯丸, 古備前)]
        println(kobizen[0].name) // 鶯丸

        var rai:[(rare: Int, name: String, faction: String)] = selectFaction("来")
        println(rai)             // [(3, 明石国行, 来), (4, 蛍丸, 来), (1, 愛染国俊, 来)]
        println(rai[0].name)     // 明石国行
        println(rai[1].name)     // 蛍丸
        println(rai[2].name)     // 愛染国俊
    }

刀剣男士は元々刀派でソートされているのであまり良い例ではないですが
ランダムなデータの抽出はFilterが便利です。
for文の中でIf文判定して一致したらappendという一連の操作をしなくていいなんて!

抽出元データの配列や、Filter条件も引数で渡せると思うのですが、
なんでも関数にできるのでいい使用例がとっさに思いつかないですね。
人間側が追いつくようもっと飛翔していきます。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3