2016-07-29 9 views

답변

2

종류입니다. Optional은 프로토콜이므로 확장을 생성하고이를 제한 할 수 있습니다. 그러나 제한 조건은 유형에있을 수 없지만 프로토콜에 있어야합니다.

extension Optional where Wrapped: SignedIntegerType { 
    func test() -> Int { 
     return 0 
    } 
} 

을하고 당신이 그것을 사용할 수 있습니다 :

이 작동

let a:Int? = nil 
a.test() 

을하지만, 당신이하려고하면 :

extension Optional where Wrapped: Int { 
    func test() -> Int { 
     return 0 
    } 
} 

당신이 오류가 발생합니다 :

type 'Wrapped' constrained to non-protocol type 'Int'

+0

해당 메서드를 호출 할 때는 옵션이 아닌 것처럼 호출해야합니다. –

+1

예, 이상하게 보입니다. IMHO. – pgb

관련 문제