Глядя на следующий код (детская площадка готова).Unwrapping создает барьер для типов значений
Я не могу добавить данные в развернутый необязательный массив из инструкции if let
.
Какой лучший способ разрешить добавление для необязательного массива?
class ValueTypeTest {
var data: [Int]?
func tryAppend() {
if var unwrappedData = self.data {
unwrappedData += [2, 3] // problem !
self.data! += [4, 5] // works
} else {
// Initialize paging and initial results
self.data = [0, 1]
}
}
}
var v = ValueTypeTest()
v.data // nil
v.tryAppend()
v.data // [0, 1]
v.tryAppend()
v.data // expected: [0, 1, 2, 3, 4, 5] actual: [0, 1, 4, 5]
Кажется, что ваш дизайн неправильный. Операция 'tryAppend()', которая всегда преуспевает, кажется, противоречит идее о том, что массив является необязательным. Я уверен, что ваш пример является упрощенным и может не содержать некоторых деталей вашего фактического кода, но в примере, который вы предоставляете, пустой необязательный массив кажется явно более подходящим, чем дополнительный. –