Elm - Tipi di dati
Il Type System rappresenta i diversi tipi di valori supportati dalla lingua. Il Type System verifica la validità dei valori forniti, prima che vengano memorizzati o manipolati dal programma. Ciò garantisce che il codice si comporti come previsto. Il Type System consente inoltre suggerimenti più ricchi sul codice e documentazione automatizzata.
Elm è un linguaggio tipizzato staticamente. Elm ha tipi simili a quelli di altre lingue.
Numero
Il numero tipo di dati rappresenta valori numerici. Il sistema di tipi Elm supporta i seguenti tipi numerici:
Sr. No. | genere | Esempio |
---|---|---|
1 | numero - Memorizza qualsiasi numero | 7 è il tipo di numero |
2 | Float - Memorizza i valori frazionari | 7/2 dà 3.5 come risultato Float |
3 | Int - Memorizza valori non frazionari | 7 // 2 restituisce 3 come risultato Int |
Il numero del tipo accetta valori sia frazionari che non frazionari. Apri elm REPL e prova gli esempi riportati di seguito:
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
>
String e Char
Il tipo di dati String viene utilizzato per rappresentare una sequenza di caratteri. Il tipo di dati Char viene utilizzato per rappresentare un singolo carattere. I valori stringa sono definiti tra virgolette doppie "e i valori Char sono racchiusi tra virgolette singole '.
Sr. No. | genere | Esempio |
---|---|---|
1 | Stringa: memorizza una sequenza di caratteri | "TutorialsPoint" |
2 | Char - Memorizza valori frazionari | 'T' |
Apri elm REPL e prova gli esempi riportati di seguito:
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
Il tipo di dati Bool in Elm supporta solo due valori: True e False. La parola chiave Bool viene utilizzata per rappresentare un valore booleano.
Sr. No. | genere | Esempio |
---|---|---|
1 | Bool: memorizza i valori True o False | 1 == 1 restituisce True |
Apri elm REPL e prova gli esempi riportati di seguito:
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
Tipi personalizzati
Elm supporta la creazione di tipi definiti dall'utente. Ad esempio, considera un'applicazione di pagamento. L'applicazione deve memorizzare diverse modalità di pagamento: carta di credito, carta di debito e net banking. Ciò può essere ottenuto definendo un tipo personalizzato e limitandone il valore alle tre modalità di pagamento accettabili.
L'esempio seguente mostra come creare un tipo personalizzato.
> 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
Nell'esempio sopra, abbiamo creato un tipo personalizzato PaymentMode. Le variabili payment1 e payment2 vengono assegnate ai valori PaymentMode. Se il valore assegnato alla variabile non corrisponde a nessuno dei valori definiti dal tipo PaymentMode, l'applicazione genererà un errore di sintassi.
Tipi di dati strutturati
I tipi di dati strutturati possono essere utilizzati per memorizzare più valori in un formato strutturato. Elm supporta i seguenti tipi di dati strutturati:
- Tuple
- List
- Record
- Record
Questi saranno discussi in dettaglio nei prossimi capitoli.