A legalapvetőbb dolog, amit meg kell érteni a Dart nyelvben, az a típusok kérdése.
A Dart egy ún. típus-biztos (type-safe) nyelv, ami azt jelenti, hogy minden értéknek van egy bizonyos típusa.
Például:
- ‘Hello World’ típusa String
- 29 típusa int
- MaterialApp típusa MaterialApp
Ezeket az „elemi” típusokat további típusokba lehet sorolni. Minden egyes típus „ős” típusa az Object.
Az int szülő típusa a num. A num-nak az Object. A MaterialApp szülő típusa a Widget. A Widget-nek az Object. Tehát minden az Object típusba fut be. Ebből az is következik, hogy minden érték valójában egy objektum.
A típusok vagy beépített Dart típusok, vagy valamilyen harmadik féltől származó csomagból jönnek, vagy akár mi is kreálhatunk új típusokat.
Mire jók a típusok?
A típusok azért léteznek, mert ezzel a Dart jó értelemben rákényszeríti a programozót arra, hogy még csak véletlenül se használhassunk rossz típust, rossz helyen.
Például a Text widget paraméterei között azt látjuk, hogy az első paramétere az egy String típusú paraméter, aminek a neve az, hogy data:
Amikor létrehozunk egy függvényt, mi is megmondhatjuk, hogy milyen legyen a paraméterek típusa:
void add(int a, int b) {
a + b;
}
Ennek megfelelően, ha a függvényt nem egész szám (int) paraméterekkel hívjuk, akkor hibát kapunk:
void demo() {
add('5', '3'); // hibás mert nem int
}
void típus
A void típus azt jelenti, hogy a függvény nem ad vissza semmilyen értéket.
? a típus után
Biztosan láttuk már, vagy fogunk olyannal is találkozni, hogy a típus nevét egy kérdőjel követi. Például:
String? color;
Ez azt jelenti, hogy ha így definiálunk egy változót, akkor ennek null értéke is lehet.