1
Swiftでは、ジェネリック関数を暗黙的に特殊化するために、パラメータの型または戻り値を使用する必要があります。なぜジェネリック関数を明示的に特殊化できないのですか?
func serialize<T>(continuation: GenericWithLongName<T, NSError> -> Void) -> Void
私はちょうどそれが苦痛になります
serialize {
(obj: GenericWithLongName<SomeType, NSError>) -> Void in
...
}
でなければなりません
serialize<SomeType> {
obj in
...
}
を書き込むことはできません。私はこのような関数を呼び出すときに問題があります。
この「機能」は長い間存在しているようです。それは設計上の決定ですか?明示的な専門化を許可することによる否定的な示唆はありますか?
そして、ジェネリッククラスをリファクタリングせずに、コードをすっきりと清潔にする方法はありますか?
serialize(SomeType.self) {
obj in
...
}
Iドン:今すぐ
func serialize<T>(
t: T.Type,
continuation: GenericWithLongName<T, NSError> -> Void) -> Void { }
は、あなたがこのような機能を「特化」することができます