Junior
Dart-da final və const açar sözləri arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
final və const dəyişənləri yaratmaq üçün istifadə olunur, onların dəyərləri ilkinləşdirildikdən sonra dəyişdirilə bilməz.
Əsas fərqlər:
-
İlkinləşdirmə vaxtı:
finalicra zamanı (runtime) ilk müraciətdən sonra ilkinləşdirilir.consttərtib zamanı (compile-time) ilkinləşdirilir.
-
Dəyər növü:
finaldəyişən icra zamanı hesablanan dəyəri saxlaya bilər.constdəyişən tərtib zamanı hesablanabilən dəyəri saxlamalıdır (literallar, sabit ifadələrin nəticəsi).
-
Sabitlik:
final: Dəyişən sabitdir, lakin ona istinad edən (əgər obyekt isə) dəyər dəyişdirilə bilər.const: Dəyişən sabitdir və ona istinad edən dəyər də sabit olmalıdır (dəyişməz).
Nümunələr:
// final - icra zamanı ilkinləşdirilir
final DateTime now = DateTime.now(); // Dəyər yalnız icra zamanı məlum olur
// const - tərtib zamanı ilkinləşdirilir
const double pi = 3.14; // Dəyər tərtib mərhələsində məlumdur
// List və xəritələr üçün const istifadə onları dəyişməz edir
const List<int> constantList = [1, 2, 3];
// constantList[0] = 10; // Xəta! List dəyişməzdir
// Final istifadə edilən list və xəritələr dəyişməz edir,
// lakin obyektin məzmunu dəyişdirilə bilər (əgər obyekt dəyişkəndirsə)
final List<int> finalList = [1, 2, 3];
finalList[0] = 10; // İcazə verilir, çünki list dəyişkəndir
// Sabit dəyər ilə final
final int a = 5; // Mümkündür, lakin `const` daha uyğundur
| İbtidaiyyət vaxtı | Dəyər tələbləri | Obyektin dəyişkənliyi (əgər obyektə istinad edirsə) | |
|---|---|---|---|
final |
İcra zamanı | İcra zamanı hesablanabilir | Dəyişkən ola bilər, əgər obyekt dəyişkəndirsə |
const |
Tərtib zamanı | Tərtib zamanı məlum olmalıdır | Dəyişməz olmalıdır |