Почему я не могу создать пустой массив вложенного класса?
Кажется, у меня возникают проблемы с созданием пустого массива вложенного типа класса с использованием синтаксиса стиля [foo]()
:
// Playground - noun: a place where people can play
class outsideClass {
}
class Wrapper {
class InsideClass {
}
}
var foo = [outsideClass]() // Works fine
// Invalid use of '()' to call a value of non-function type '[Wrapper.InsideClass.Type]'
var bar = [Wrapper.InsideClass]()
Я что-то недопонимаю, это до моего кофе, но я проверял заметки о выпуске, и я думаю, что вы должны иметь возможность ссылаться на вложенные классы вроде этого - или на ошибку в бета-версии 7?
Это отлично работает в качестве обходного пути:
var foobar: [Wrapper.InsideClass] = []
Ответы
Ответ 1
Это определенно выглядит как ошибка в компиляторе, тем более, что вам разрешено создавать экземпляр пустого массива вложенного класса просто отлично; он просто не работает с синтаксисом инициализатора.
Я подниму ошибку. Тем временем, для тех, кто испытывает проблему, вы можете обойти это, используя синтаксис присваивания с пустым массивом и указанным классом для переменной, а не синтаксисом конструктора:
var foobar: [Wrapper.InsideClass] = []
Ответ 2
Другой способ - использовать конструктор Array<T>()
.
let arrayOfNestedClass = Array<Wrapper.InsideClass>()