Middle
Dartта dynamic тиби менен object тиби кандай айырмаланат?
sobes.tech AI
AIден жооп
dynamicөзгөрмө айнымалынын түрү иштөө учурунда өзгөрө алат. Тиркемеде түр текшерүүлөр өчүрүлгөн. Бул иштөө учурунда каталарга алып келиши мүмкүн.Object— Dartтеги бардык объекттердин негизги классы.Objectтүрүндөгү өзгөрмө ар кандай маанини сактай алат, бирок анын мүлктөрүнө жана ыкмаларына кирүү үчүн ачык түргө түрлөнүү (cast) жеisаркылуу түрүн текшерүү керек. Түр текшерүүлөр тиркемеде жүргүзүлөт.
Мисал:
// Dynamic - тиркемеде түр текшерүү жок
dynamic myDynamicVariable = 10;
myDynamicVariable = "салам"; // уруксат берилген
// Object - түр текшерүүлөр же түргө түрлөнүү талап кылынат
Object myObjectVariable = 10;
// print(myObjectVariable.length); // түргө түрлөнбөстөн ката
if (myObjectVariable is int) {
// коопсуз колдонуу катары int
int value = myObjectVariable;
print(value + 5);
}
Негизги айырмачылыктар таблицада кыскача:
| Өзгөчөлүк | dynamic |
Object |
|---|---|---|
| Түр текшерүү | Компиляция учурунда өчүрүлгөн | Компиляция учурунда жүргүзүлөт |
| Коопсуздук | Төмөн (жүруу учурунда каталар коркунучу) | Жогорку (ачык түргө түрлөнүү менен) |
| Мүчөлөргө жетүү | Түрүн өзгөртпөстөн (жүруу учурунда каталар коркунучу) | Ачык түргө түрлөнүү же текшерүү талап кылынат |
| Колдонуу | Экстремалдуу учурларда, түрү гана иштөө учурунда белгилүү болсо | Ар кандай түрдөгү маанилерди сактоо, зарыл болсо ачык көзөмөл менен |