Swift Struct: добавление новых параметров во время выполнения - PullRequest
0 голосов
/ 05 марта 2019

С учетом экземпляра структуры, подобного этому:

struct Size {
    var width: Int
    var height: Int
}

Есть ли возможность расширить его по времени выполнения до:

struct Size {
    var width: Int
    var height: Int
    var depth: Int
}

добавление нового параметра в существующий экземпляр структуры Size?

Спасибо

Ответы [ 2 ]

1 голос
/ 05 марта 2019

Нет, нет никакого способа добавить это, но вы можете сделать следующее: вы можете объявить все, что вам может понадобиться во время выполнения, как необязательное, плюс, если, однако, вы смогли добавить новые свойства в structво время выполнения, какая польза от этого?как вы собираетесь их использовать?

Просто необязательные значения.

struct Size {
 var width: Int
 var height: Int
 var depth: Int? // this could be nil or Int 
}
0 голосов
/ 05 марта 2019

Это Свифт. Вы должны знать о свойствах вашего объекта при его создании.

У вас есть варианты:

  • Сделать свойство depth необязательным. Тогда это свойство не должно иметь никакого значения

    var depth: Int?
    
  • Или указать значение по умолчанию

    var depth: Int = 1
    

    С помощью этой второй опции вы можете создать пользовательский init со значением по умолчанию

    struct Size {
        var width, height, depth: Int
    }
    
    extension Size {
        init(width: Int, height: Int) {
            self.init(width: width, height: height, depth: 1)
        }
    }
    
    Size(width: 1, height: 1)
    Size(width: 1, height: 1, depth: 1)
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...