If you have two properties with initial values, you'd have to generate 4 initializers; three, 8; and so on. The feature we suspect would be more useful is to use the initial values as default arguments, which is captured in SR-5534. Of course, this would need to go through the Swift Evolution Process, since it's a language change.
It is worth considering though that for this specific example, var books: [Book]?
and var books: [Book]? = nil
actually mean the same thing since optionals default to nil anyways.
I believe that that's actually an important inconsistency that would be introduced and therefore would need to be considered in the evolution progress.
Indeed it does, but if you would write the initialiser yourself, it would make difference since Swift will synthesise another initialiser just because the = nil.