Avatar
omochimetaru 8/10/2017 3:54 AM
switch-caseによる let as は as? ができるときと違って、評価対象の式とcaseの型に親子関係が無いといけないのと、Arrayにcovarianceが無いことが組み合わさって、以下のような挙動になっているけど納得がいかない。 class Animal {} class Cat : Animal {} var animal = Animal() var cat: Cat? = animal as? Cat // OK switch animal { case let animal as Cat: // OK print(animal) default: break } var animalArray = [Animal]() var catArray: [Cat]? = animalArray as? [Cat] // OK switch animalArray { case let animalArray as [Cat]: // Compile error !!! print(animalArray) break default: break }