Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Para qué sirve el mecanismo opcional de Swift?

¿Para qué sirve el mecanismo opcional de Swift?

¿Por qué introducir Opcional?

Porque Swift es un lenguaje fuertemente tipado

¿Por qué no se puede hacer que nil sea compatible con todos los tipos?

Porque Swift Es un lenguaje fuertemente tipado y el tipo nulo no se puede juzgar. A diferencia de otros tipos, es incompatible.

¿Por qué nil no puede ser igual a falso?

Debido a que Swift es un lenguaje fuertemente tipado, el tipo nulo no se puede juzgar y el tipo falso es Bool. Los tipos son diferentes y no pueden ser iguales.

¿Cuáles son los beneficios de introducir tipos opcionales?

Debido a que Swift es un lenguaje fuertemente tipado, para resolver el problema del tipo nulo desconocido, se debe introducir Opcional para encapsular nil. Solo cuando nil tiene un tipo se puede integrar en la categoría de fuertemente. lenguajes mecanografiados. Realmente no hay otra manera mejor. Consulte otros lenguajes de programación: Tipo de opción

Personalmente, creo que Opcional no se introduce para brindar beneficios, e incluso es un poco problemático para aquellos que están acostumbrados a lenguajes dinámicos. Sin embargo, debido a Opcional, Se resuelven muchos problemas de tipos importantes (como la seguridad de tipos), "Ninguno" y "Nulo" se separan más claramente y habrá menos errores.

Además, desde la perspectiva del lenguaje funcional, Opcional es un contenedor, una instancia de Functor y Monad, y puede mapear y flatMap.

Ejemplo 1:

//test.playground

var str: Int? = 0

str.successor() // error

str.map { $0.successor() } //ok

str 1 //error

str.flatMap { $0 1 } //ok

Ejemplo 2:

//Pseudocódigo

//Sin opcional

if a != nil {

sea a1 = f1(a)

si a1 != nil {

sea a2 = f2(a1)

si a2 != nil {

f3(a2)

}

}

}

//Con opcional

p>

f1: Opcional -gt; Opcional

f2: Opcional -gt; Opcional

f3: Opcional -gt; ($0) } .flatMap { f2($0) } .flatMap { f3($0) }

//o

a.flatMap { f3( f2( f1( $0 ) ) ) }

La nada es nada, el vacío es el vacío y la existencia es existencia. Ahora le damos un nombre unificado, llamado Opcional.

Al mismo tiempo, combina el mapeo de funciones de mapa para realizar unbox, box y bind automáticos, y abandona el pensamiento estructural concreto como if else y ? Puede lograr abstracción y escritura de nivel superior. con pensamiento funcional puro. Producir código más robusto y más fácil de mantener.