Ποιοι είναι οι τρόποι χρήσης της λέξης-κλειδιού const στη Dart;
sobes.tech AI
Απάντηση από AI
Η λέξη-κλειδί const στη Dart χρησιμοποιείται για τη δημιουργία σταθερών τιμών που καθορίζονται κατά τη μεταγλώττιση και δεν μπορούν να τροποποιηθούν κατά την εκτέλεση του προγράμματος.
Τρόποι χρήσης:
-
Ως τροποποιητής μεταβλητής: Χρησιμοποιείται για τον ορισμό μιας μεταβλητής της οποίας η τιμή είναι σταθερή κατά τη μεταγλώττιση.
const int speedOfLight = 299792458; // Σταθερή τιμή -
Ως τροποποιητής κατασκευαστή: Ένας κατασκευαστής που δηλώνεται ως
constδημιουργεί αμετάβλητα στιγμιότυπα της κλάσης, εφόσον όλα τα πεδία του είναι τελικά (final) ή σταθερά (const).class Point { final double x; final double y; const Point(this.x, this.y); // Σταθερός κατασκευαστής } const origin = Point(0.0, 0.0); // Δημιουργία σταθερού στιγμιότυπου -
Για τη δημιουργία σταθερών συλλογών: Χρησιμοποιείται για τη δημιουργία λιστών, συνόλων και χαρτών των οποίων το περιεχόμενο είναι σταθερό κατά τη μεταγλώττιση.
const List<int> primeNumbers = [2, 3, 5, 7, 11]; // Σταθερή λίστα const Set<String> constants = {'pi', 'e', 'phi'}; // Σταθερό σύνολο const Map<String, double> mathConstants = { 'pi': 3.14159, 'e': 2.71828 }; // Σταθερός χάρτης -
Σε συμφραζόμενα όπου αναμένεται σταθερή τιμή: Για παράδειγμα, κατά τη δημιουργία widget στο Flutter, όπου τα σταθερά widget μπορούν να βελτιστοποιηθούν.
// Στο πλαίσιο του Flutter const Text('Hello, World!'); // Σταθερό widget
Διαφορές με το final:
- Το
constορίζει μια τιμή γνωστή κατά τη μεταγλώττιση. - Το
finalορίζει μια τιμή που ανατίθεται μόνο μία φορά κατά την εκτέλεση και δεν μπορεί να αλλάξει μετά.
| Χαρακτηριστικό | const |
final |
|---|---|---|
| Χρόνος αρχικοποίησης | Κατά τη μεταγλώττιση | Κατά την εκτέλεση (μία φορά) |
| Αμεταβλητότητα της τιμής | Αμετάβλητη | Ανατίθεται μία φορά, μετά δεν αλλάζει |
| Εφαρμογή σε στιγμιότυπα | Δημιουργεί σταθερό στιγμιότυπο (αν ο κατασκευαστής είναι const) |
Δημιουργεί αμετάβλητη αναφορά σε αντικείμενο |
| Εφαρμογή σε συλλογές | Δημιουργεί αμετάβλητη συλλογή με αμετάβλητο περιεχόμενο | Δημιουργεί αμετάβλητη αναφορά σε συλλογή (το περιεχόμενο μπορεί να είναι μεταβλητό) |