¿Es un tipo Opcional / Tal vez útil en idiomas dinámicos?

13

Optional es útil de una manera obvia en un lenguaje de tipo estático, pero me pregunto si también es útil en idiomas dinámicos. Por lo general, no hay compilador que le diga "hey, utilizó este Optional<String> como String ", por lo que aún tiene que descubrir sus errores en el tiempo de ejecución. Tengo un fondo de escritura estática y, desde mi perspectiva, no puedo ver el beneficio de un tipo Optional en un lenguaje dinámico.

    
pregunta Daniel Kaplan 18.03.2015 - 22:42

2 respuestas

13

Esa debilidad no es realmente diferente a la de todos los tipos todos en idiomas dinámicos. Tienes que ejecutarlo para averiguar qué hay en él. Las opciones no son realmente diferentes en ese sentido.

Las opciones son más que una simple anotación estática de que un valor puede o no estar presente. Ellos tienen operaciones asociadas con ellos también. Las cadenas de operaciones asignadas en las opciones son una característica muy útil, que evita que tenga que buscar fallas después de cada paso en la cadena.

Incluso si solo recuperaste el valor de inmediato, seguiría presionando al programador para que compruebe Nothing la primera vez que se ejecutó y falló. Sin una opción, ese impulso solo se llevaría a cabo si contuviera null la primera vez que lo ejecutó. Muchas referencias a punteros nulos han esperado obstinadamente hasta que el producto estaba en el campo.

    
respondido por el Karl Bielefeldt 18.03.2015 - 23:02
0

Puedo hablar por Objective-C.

Dado que los idiomas tipados dinámicos se unen tarde, la verificación de un "opcional" (un no-valor se representa con nil ) es inherente: si se comprueba el tipo en tiempo de ejecución, se comprueba nil de forma implícita. Por supuesto que esto es chainable. Esto también se hace de forma inherente.

Para los lenguajes de tipo estático, este concepto adicional es un beneficio, ya que tienen que tomar la decisión de tipo en el momento de la compilación, una situación que los lenguajes de tipo dinámico nunca han tenido.

    
respondido por el Amin Negm-Awad 23.07.2015 - 22:04

Lea otras preguntas en las etiquetas