Avatar
3.1からのtypealiasの件、wandboxで試してみました 下記のコードで3.0.2までは動きますが、3.1-devとXcode8.3ではエラーになります open class Hoge<T> { public typealias ErrorInfo = (error: Error?, isCancelled: Bool) var receiveError: ((ErrorInfo) -> Void)? } Hoge<String>().receiveError = { (errorInfo: Hoge.ErrorInfo) in print(errorInfo) }
3:50 PM
これは3.1でも通ります open class Hoge<T> { public typealias ErrorInfo = (error: Error?, isCancelled: Bool) var receiveError: ((ErrorInfo) -> Void)? } Hoge<String>().receiveError = { (errorInfo: Hoge<Any>.ErrorInfo) in print(errorInfo) }
3:52 PM
型変数を定義してるスコープ内の型にアクセスする際は、アクセスする際に型変数を埋めることが3.1から必須になったってことみたいです // o Hoge<Any>.ErrorInfo // x: 3.1〜Hoge.ErrorInfoとHoge<T>.ErrorInfoは区別する Hoge.ErrorInfo (edited)