Por qué la constante opcional no tiene automáticamente un valor predeterminado de nil

El siguiente código funciona bien

struct carConfi { var owner: String? let brand: String = "BMW" var currentMile: Double = 2000 } let tomCar = carConfi() 

Sin embargo, si cambio el tipo del owner a constante, habrá un error en el inicializador

 struct carConfi { let owner: String? // Change to constant let brand: String = "BMW" var currentMile: Double = 2000 } let tomCar = carConfi() //error: missing argument for parameter 'owner' in call 

Hice un poco de búsqueda, resulta que es porque las variables opcionales tienen automáticamente un valor predeterminado de nil

Supongo: Porque una vez que se establece la constante, entonces no se puede cambiar, si la constante opcional recibe automáticamente un nil entonces se mantendrá como un nil inmutable que es muy tonto y puede contra los usuarios

Pregunta: Mi universidad no está completamente convencida por la suposición, él me dijo que debe haber más razones para eso. Agradecería mucho si alguien me puede explicar eso

Gracias

No se establece un campo de solo lectura (constante) con un:

  • expresión de inicialización
  • inicializador

es casi seguro una indicación de un error en su progtwig.

Como no tiene otra oportunidad para establecer el valor de su campo let , el valor del campo permanecerá nil (o algún otro predeterminado). Es bastante improbable que un progtwigdor encuentre deseable tal comportamiento y lo solicite a propósito.

Es por eso que Swift señala esta situación como un error. Por otro lado, si realmente desea que su constante String permanezca nil , podría agregar una expresión para establecerla en nil y silenciar el error:

 let owner: String? = nil // Pretty useless, but allowed 

Las constantes se establecen una sola vez. Si quisieras que fuera nulo o 0, entonces lo establecerías. Siempre defines una constante en la iniciación.