Colección de citas famosas - Mensajes de felicitación - ¿Por qué las matrices arrojan excepciones pero los diccionarios no?

¿Por qué las matrices arrojan excepciones pero los diccionarios no?

Cuando accedemos a la matriz, si cruzamos esta línea, definitivamente recibiremos un error. Tomemos como ejemplo el lenguaje veloz.

La matriz contiene solo tres elementos, pero cuando usamos el subíndice 10 para acceder a ella, se producirá un error de fuera de límites.

Pero cuando accedemos a un elemento que no está en el diccionario, ¡no ocurrirá una situación similar!

Mismo problema, diferente tratamiento, ¿por qué?

Echemos un vistazo a la implementación del acceso a subíndices de diccionario y matriz en Swift.

Al comparar las dos implementaciones, podemos obtener la causa del problema:

Entonces, para las matrices, Swift no tiene más remedio que obtener un error fatal. El diccionario devuelve un valor opcional. Si sucede algo inesperado, el diccionario puede devolver nulo tranquilamente incluso si el subíndice no puede arrojar un error.

De hecho, podemos extender la matriz para implementar una versión que no arroje una excepción incluso si el acceso a la matriz se sale de los límites.

Usamos la palabra clave extensión para extender la matriz. Cabe señalar que no podemos anular el método de subíndice original.

Todo lo que tenemos que hacer es agregar un nuevo método de subíndice y especificar explícitamente un parámetro externo. Ahora podemos acceder a la matriz de esta manera.

Necesitamos agregar una etiqueta al suscribirnos. En este momento, aunque hemos cruzado la línea, hemos obtenido un cero como un diccionario.