Sobes.tech
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

finalconst 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ı:

    • final icra zamanı (runtime) ilk müraciətdən sonra ilkinləşdirilir.
    • const tərtib zamanı (compile-time) ilkinləşdirilir.
  • Dəyər növü:

    • final dəyişən icra zamanı hesablanan dəyəri saxlaya bilər.
    • const də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