Рассмотрим следующее:
struct SomeStruct {}
var foo: Any!
let bar: SomeStruct = SomeStruct()
foo = bar // Compiles as expected
var fooArray: [Any] = []
let barArray: [SomeStruct] = []
fooArray = barArray // Does not compile; Cannot assign value of type '[SomeStruct]' to type '[Any]'
Я пытался найти логику этого, но не повезло. Стоит упомянуть, если вы измените структуру на класс, она отлично работает.
Всегда можно добавить обходной путь и сопоставить каждый объект fooArray и применить их к типу Any, но это не проблема. Я ищу объяснение, почему это так себя ведет.
Может кто-нибудь объяснить это?