Nice way of copying an immutable value while changing only a few of its many properties?

The synthesized init is no different than having manually written an init which initializes properties in declaration order. And order matters in Swift, so you can't really have both.

If you want to discuss the let with default value issue, feel free to search for one of the previous discussions and see if you have anything to add.