2017-02-17 12 views
0

프로토콜에 유형이 있습니다. 형식 준수를 유형에 추가해야합니까 아니면 대안이 있습니까? 내 목표는 한 번 타입 앨리어스를 선언하는 것입니다.프로토콜 내부의 입력란

protocol SomeProtocol { 
    associatedtype T 
    typealias Closure = (T) -> Void 
    var blocks: [Closure] { get set } 
} 

struct SomeStruct<T>: SomeProtocol { 
    typealias Closure = (T) -> Void // <- do I have to add this? 
    var blocks: [Closure] 
} 

참고하시기 바랍니다. 임씨는 단순히 타타 리아 어의 더 간단한 구현을 찾고 있습니다.

+4

글쎄, 당신이 그것을 제거하는 시도 무슨 일이보고? – Alexander

+0

내가 그것을 다시 포함해야하는지 여부를 물어 본 임. – efremidze

답변

-1

당신은 반드시 struct에서 typealias 필요하지 않습니다 - 그것은 유추 할 수 있습니다

protocol SomeProtocol { 
    associatedtype T 
    typealias Closure = (T) -> Void 
    var blocks: [Closure] { get set } 
} 

struct SomeStruct<T>: SomeProtocol { 
    var blocks: [(T) -> Void] 
} 

let someStruct = SomeStruct<Int>(blocks: [{someInt in print(someInt)}]) 
someStruct.blocks[0](123) 
+0

그 유추가되지 않았다. – efremidze

+0

무엇을 의미 하는가? 놀이터에서 그 예를 시도해보십시오. 구조체에'typealias'를 사용할 필요가 없습니다. –

+0

ur 대신'var blocks : [Closure]'대신'var blocks : [(T) -> Void]'를 사용하십시오. 내가 그것을 그렇게 사용한다면 그것은 효과적 일 것이다. 그러나 그것은 질문이 아니다. – efremidze