2017-02-17 25 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] 
} 

FYI это работает. Я просто ищу более простой реализации типов.

+4

Ну, вы пробовали удалить его видеть то, что происходит? – Alexander

+0

Я спрашиваю, использую ли я толялии, нужно ли мне снова включить его. – efremidze

ответ

-1

Вам не обязательно нужна typealias в struct - можно сделать вывод:

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

Ур, использующий 'var blocks: [(T) -> Void]' вместо 'var blocks: [Closure]'. Это сработает, если я его так и сделаю, но это не вопрос. – efremidze

 Смежные вопросы

  • Нет связанных вопросов^_^