Elm - Tipos de datos

El sistema de tipos representa los diferentes tipos de valores admitidos por el idioma. El Type System verifica la validez de los valores proporcionados, antes de que sean almacenados o manipulados por el programa. Esto asegura que el código se comporte como se esperaba. Además, el Type System permite sugerencias de código más completas y documentación automatizada.

Elm es un lenguaje escrito estáticamente. Elm tiene tipos similares a los de otros idiomas.

Número

El número de tipo de datos representa valores numéricos. El sistema de tipo Elm admite los siguientes tipos numéricos:

No Señor. Tipo Ejemplo
1 número: almacena cualquier número 7 es el tipo de número
2 Flotante: almacena valores fraccionarios 7/2 da un resultado de 3,5 como flotante
3 Int: almacena valores no fraccionarios 7 // 2 da 3 resultado como Int

El número de tipo admite valores fraccionarios y no fraccionarios. Abra el elm REPL y pruebe los ejemplos que se dan a continuación:

C:\Users\admin>elm repl
---- elm-repl 0.18.0 
---------------------------------------------
--------------
:help for help, :exit to exit, more at <https://github.com/elm-lang/elm-repl>
------------------------------------------
--------------------------------------
> 7
7 : number
> 7/2
3.5 : Float
> 7//2
3 : Int
>

Cadena y Char

El tipo de datos String se utiliza para representar una secuencia de caracteres. El tipo de datos Char se utiliza para representar un solo carácter. Los valores de cadena se definen entre comillas dobles "y los valores de Char se incluyen entre comillas simples".

No Señor. Tipo Ejemplo
1 Cadena: almacena una secuencia de caracteres "TutorialsPoint"
2 Char: almacena valores fraccionarios 'T'

Abra el elm REPL y pruebe los ejemplos que se dan a continuación:

C:\Users\admin>elm repl
---- elm-repl 0.18.0 ---------------------------------------
--------------------
:help for help, :exit to exit, more at <https://github.com/elm-lang/elm-repl>
--------------------------------------
------------------------------------------
> "TutorialsPoint"
"TutorialsPoint" : String
> 'T'
'T' : Char

Bool

El tipo de datos Bool en Elm solo admite dos valores: Verdadero y Falso. La palabra clave Bool se utiliza para representar un valor booleano.

No Señor. Tipo Ejemplo
1 Bool: almacena valores verdaderos o falsos 1 == 1 devuelve verdadero

Abra el elm REPL y pruebe los ejemplos que se dan a continuación:

C:\Users\dell\elm>elm repl
---- elm-repl 0.18.0 -----------------------------------
------------------------
:help for help, :exit to exit, more at <https://github.com/elm-lang/elm-repl>
----------------------------------------
----------------------------------------
> True
True : Bool
> False
False : Bool
> 1==1
True : Bool
> 1==2
False : Bool
> 1 /= 2 -- not equal
True : Bool
> not True
False : Bool
> not False
True : Bool

Tipos personalizados

Elm admite la creación de tipos definidos por el usuario. Por ejemplo, considere una aplicación de pago. La aplicación necesita almacenar diferentes modos de pago: tarjeta de crédito, tarjeta de débito y banca neta. Esto se puede lograr definiendo un tipo personalizado y restringiendo su valor a los tres modos de pago aceptables.

El siguiente ejemplo muestra cómo hacer un tipo personalizado.

> type PaymentMode = CreditCard|NetBanking|DebitCard
> payment1 = CreditCard
CreditCard : Repl.PaymentMode
> payment2 = DebitCard
DebitCard : Repl.PaymentMode
> payment3 = UPI
-- NAMING ERROR ---------------------------------------------- repl-temp-000.elm

Cannot find variable `UPI`

7| payment3 = UPI

En el ejemplo anterior, creamos un tipo personalizado PaymentMode. Las variables pago1 y pago2 se asignan a los valores de PaymentMode. Si el valor asignado a la variable no coincide con ninguno de los valores definidos por el tipo PaymentMode, la aplicación arrojará un error de sintaxis.

Tipos de datos estructurados

Los tipos de datos estructurados se pueden utilizar para almacenar varios valores en un formato estructurado. Elm admite los siguientes tipos de datos estructurados:

  • Tuple
  • List
  • Record
  • Record

Estos se discutirán en detalle en los próximos capítulos.