Sobes.tech
Middle

Dart-də dynamic tipi ilə object tipi arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

  • dynamic göstərir ki, dəyişənin tipi işləmə zamanı dəyişə bilər. Onun üçün tiplərin yoxlanması tərtib zamanı deaktivdir. Bu, işləmə zamanı səhvlərə səbəb ola bilər.
  • Object Dart-da bütün obyektlərin əsas sinfidir. Object tipində dəyişən hər hansı bir dəyəri saxlaya bilər, lakin onun xüsusiyyətlərinə və metodlarına giriş üçün açıq tip çevirmə (cast) və ya is ilə tip yoxlaması tələb olunur. Tip yoxlamaları tərtib zamanı həyata keçirilir.

Nümunə:

// Dynamic - tərtib zamanı tip yoxlaması yoxdur
dynamic myDynamicVariable = 10;
myDynamicVariable = "salam"; // İcazə verilir

// Object - tip yoxlamaları və ya çevirmə tələb olunur
Object myObjectVariable = 10;
// print(myObjectVariable.length); // Çevirmə olmadan tərtib xətası

if (myObjectVariable is int) {
  // Təhlükəsiz istifadə kimi int
  int value = myObjectVariable;
  print(value + 5);
}

Əsas fərqlər cədvəldə qısaca:

Xüsusiyyət dynamic Object
Tip yoxlaması Tərtib zamanı deaktivdir Tərtib zamanı həyata keçirilir
Təhlükəsizlik Aşağı (işləmə zamanı səhv riski) Yüksək (açıq çevirmə ilə)
Üzvlərə giriş Çevirmə olmadan (işləmə zamanı səhv riski) Açıq çevirmə və ya yoxlama tələb edir
İstifadə Ən ekstremal hallarda, yalnız işləmə zamanı məlum olan tip üçün Hər cür dəyəri saxlamaq, lazım olduqda açıq nəzarət ilə