final class Killer {
var dogs = [Dog]()
var cats = [Cat]()
var foxes = [Fox]()
var animals: [Animal] {
return dogs.map{$0} + cats.map{$0} + foxes.map{$0}
}
}
class Dog: Animal {
}
class Cat: Animal {
}
class Fox: Animal {
}
class Animal {
}
これをコンパイルしようとするとコンパイラのCPU使用率が100%になる。
恐らくAnimalクラスのサブクラスのオブジェクトの配列たちをAnimalクラスの配列として連結するとコンパイラの型推論がおかしくなって死ぬんだと思う。
同じように
let hoge = [0..<10, 1..<4, 5...6, 7..<9,0..<10, 1..<4, 5...6, 7..<9]
などのように長いrangeの配列などでもコンパイラの型推論がおかしくなって死ぬ