2016-09-29 3 views
-1

Я новичок в Swift и столкнулся с этой проблемой. Почему я не могу присвоить значение fishy.depth? enter image description hereНаследование более чем одного протокола в Swift

+4

Пожалуйста, напишите * код *, а не скриншоты. –

+0

Функциональные параметры: * константы. * В зависимости от вашего намерения вы можете: 1) использовать параметр 'inout' или 2) определять протоколы как * class protocol * (пример: http://stackoverflow.com/questions/33471858/ скор-протокол слабый не может-быть применен к неклассовому типу). –

ответ

0

В нем говорится, что fishy - это пустая константа, вы должны установить fishy как var, чтобы она могла изменить ее значение.

+0

Большое вам спасибо. –

+0

Приветствую вас, вы можете принять ответ, пожалуйста, tnx! –

0

не может иметь экземпляр. протокол является добрым как утверждение.

struct Carp: Fish, UnderWater{ 

    var fins: Int 
    var depth: Int 

    init(fins: Int) { 
     self.fins = fins 
     self.depth = 0 
    } 

    init(depth: Int) { 
     self.fins = 0 
     self.depth = depth 
    } 

} 

func surface<T: Fish & UnderWater>(t: inout T){ 
    t.depth = 0 
} 

let carp = Carp(depth: 0) 
surface(t: &carp) 

Вы можете отправить Carp в функцию, а не протокол. Вы можете создать экземпляр, класс, перечисление, но не протокол.

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

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