Milyen módon használható a const kulcsszó Dartban?
sobes.tech MI
Válasz az MI-től
A const kulcsszó a Dartban olyan állandó értékek létrehozására szolgál, amelyek a fordítási időben kerülnek meghatározásra, és a program futása során nem változtathatók meg.
Használati módok:
-
Változó módosítóként: Olyan változó deklarálására használják, amelynek értéke fordítási időben állandó.
const int speedOfLight = 299792458; // Állandó érték -
Konstruktor módosítóként: Egy
const-ként deklarált konstruktor nem változtatható példányokat hoz létre az osztályból, ha minden mezője végleges (final) vagy állandó (const).class Point { final double x; final double y; const Point(this.x, this.y); // Állandó konstruktor } const origin = Point(0.0, 0.0); // Állandó példány létrehozása -
Állandó kollekciók létrehozására: Listák, halmazok és térképek létrehozására, amelyek tartalma fordítási időben állandó.
const List<int> primeNumbers = [2, 3, 5, 7, 11]; // Állandó lista const Set<String> constants = {'pi', 'e', 'phi'}; // Állandó halmaz const Map<String, double> mathConstants = { 'pi': 3.14159, 'e': 2.71828 }; // Állandó térkép -
Olyan kontextusokban, ahol állandó értéket várnak: Például Flutterben widgetek létrehozásakor, ahol az állandó widgetek optimalizálhatók.
// Flutter kontextusban const Text('Hello, World!'); // Állandó widget
Különbség a final-tól:
- A
constolyan értéket határoz meg, amely ismert a fordítási időben. - A
finalolyan értéket határoz meg, amelyet csak egyszer rendelnek hozzá futás közben, és utána nem módosítható.
| Jellemzők | const |
final |
|---|---|---|
| Inicializálási időpontja | Fordítási időben | Futási időben (egyszer) |
| Érték változtathatósága | Nem változtatható | Egyszer hozzárendelve, utána nem változtatható |
| Alkalmazás példányokra | Állandó példányt hoz létre (ha a konstruktor const) |
Olyan hivatkozást hoz létre, amely nem változtatható |
| Kollekciókra való alkalmazás | Nem változtatható kollekciót hoz létre, tartalma is változtathatatlan | Változtatható tartalmú kollekcióra is alkalmazható referencia |