Middle
Dart-də dynamic tipi ilə object tipi arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
dynamicgö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.ObjectDart-da bütün obyektlərin əsas sinfidir.Objecttipində 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ə yaisilə 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ə |