1. leegun

    No comment

    leegun
Changes in body
Source | HTML | Preview

ジェネリクス(Generics)の書き方

Genericsってそもそも何?

抽象化されたデータ型

と言われてもよくわかりませんよね・・・

例題

あるデータ(Int, String, Double)を指定数だけ配列化して戻すメソッドを作りなさい。

このような、お題、あなたならどうやって作りますか?

non_generics.swift
    func getIntArray(num: Int, count: Int) -> [Int] {
        var result = [Int]()
        for _ in 0..<count {
            result.append(num)
        }
        return result
    }

    func getStringArray(num: String, count: Int) -> [String] {
        var result = [String]()
        for _ in 0..<count {
            result.append(num)
        }
        return result
    }

こんな冗長なメソッドを作ってませんか!?
私もそうしてました・・・
でもGenericsなら引数と戻り値を抽象化して簡単に1メソッドで定義できます。

generices.swift
    func getArray<T>(num: T, count: Int) -> [T] {
        var result = [T]()
        for _ in 0..<count {
            result.append(num)
        }
        return result
    }

Javaとかでよく見かけますが、今まで抽象化するより型を縛るイメージでした。
他にも色々な使い方があるかもしれません。
ちなみにはtypeという意味で慣例的に使われてますが、別になんでも良い()そうです。
今後はバンバンGenerics活用して行きます!