2015-12-15 2 views
2

Как я могу реализовать внутренние внутренние протоколы в Swift?Внутренние протоколы класса в Swift

Проблема заключается в том, что

class C { 
    private protocol P { 
     func aFunction() 
    } 

    private class D: P { 
     func aFunction() { 
      //... 
     } 
    } 
} 

приводит к ошибке

Декларация действительна только в файле объема

Любые идеи для обхода этой проблемы?

Исключение: я делаю не см. class-only protocols, что возможно, конечно.

ответ

4

Контроль доступа в swift основан на файле. Я не думаю, что вы можете определить протокол внутри класса, но вы можете включить его в один и тот же документ.

private protocol P { 
    func aFunction() 
} 

class C { 
    private class D: P { 
     private func aFunction() { 
      //... 
     } 
    } 
} 

Конечно, это не означает, что классы, которые наследуют от класса C может использовать протокол P.

Насколько мне известно, Swift не поддерживает управление доступом на основе наследования.