ジェネリクスに型を教えた状態のクラスを返したい
とくに意味をなさないうえに冗長なコードですが、サンプルのために、下記のようなソースがあるとします。
class Hoge<T: Equatable, U: Equatable> {
var x: T?
var y: U?
init() {
}
}
typealias TT = String
typealias UU = Int
let hoge = Hoge<TT, UU>()
T
にはString
。 U
にはInt
を教えることができました(この教える
にあたる専門用語を忘れてしまいました... 追記:特殊化(specialization)
でした)。
これと同じことをするファクトリーのような関数を作りたいと考え下記のようにしましたがうまくいきません。うまい書き方はありますか?
func hogeFactory<TT: Equatable, UU: Equatable>() -> Hoge<TT, UU> {
return Hoge<TT, UU>()
}
let h = hogeFactory<String, Int>()
MyPlayground.playground:12:20: note: while parsing this '<' as a type parameter bracket
let h = hogeFactory()