youtubers tesis sobre sirve resumida que para investigaciones investigacion historia caracteristicas scala

scala - sirve - tesis sobre youtube pdf



¿Cuál es la diferencia entre Unidad y Nada? (3)

Ambos tipos, Unit y Nothing indican una función que no devuelve nada. ¿Cual es la diferencia entre ellos?


Para agregar un aspecto a la respuesta de Petr: Nothing juega un papel importante en la jerarquía de tipos. Es un tipo de fondo. Eso significa que es un subtipo de cualquier otro tipo, que es como el opuesto de Any , que es un supertipo de todo. Puedes encontrar una buena explicación here .


Unit es un tipo que tiene exactamente un valor; consulte Tipo de unidad . Por otro lado, Nothing no tiene un valor posible , ver Tipo de fondo .

Una función que no devuelve nada debe tener el tipo de devolución Unit . Si fuera Nothing , la función no podría devolver un resultado. La única manera de salir de la función sería por una excepción.

Nothing se usa de una manera diferente. Se caracteriza por dos propiedades:

  1. Nothing es un subtipo de cualquier otro tipo (incluido Null ).
  2. No existen instancias de este tipo.

¿Cuándo es esto útil? None considere None :

object None extends Option[Nothing]

Debido a que Option es covariante en su parámetro de tipo y Nothing es un subtipo de todo, Option[Nothing] es un subtipo de Option[A] para cada tipo A Entonces, podemos hacer un objeto None que es un subtipo de Option[A] para cada A Esto es razonable, ya que no se puede crear una instancia de Option[Nothing] por lo que la Option[Nothing] siempre tendrá un valor. similar

object Nil extends List[Nothing]

Unit corresponde a la lógica verdadera y Nothing corresponde a la lógica falsa en el isomorfismo de Curry-Howard , donde vemos los tipos como proposiciones y las funciones como pruebas,.


Unit significa que (a) la función tiene efectos secundarios como entrada y salida, (b) estos efectos secundarios son el objetivo principal de la función. Por supuesto, la función puede tener efectos secundarios, incluso si su tipo es diferente de la Unit .

Nothing es un tipo especial en Scala, porque (a) no tiene valores (la Unidad tiene exactamente un valor - () ), por lo que no puede devolver un valor de tipo Nothing y (b) es un subtipo de todos los otros tipos. Eso significa que si algo tiene el tipo Nothing , puede usarse en cualquier lugar donde se requiera otro tipo, pero no producirá ningún resultado. Esto se usa para tratar con excepciones: throw expresión tiene un tipo de Nothing , por lo que se puede usar básicamente en cualquier parte del programa.

Simplemente, Nothing significa que hubo un error y no se devolvió nada, mientras que Unit significa que hubo efectos secundarios.

La programación en Scala tiene una buena explicación de eso.