Sobes.tech
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
Түр текшерүү Компиляция учурунда өчүрүлгөн Компиляция учурунда жүргүзүлөт
Коопсуздук Төмөн (жүруу учурунда каталар коркунучу) Жогорку (ачык түргө түрлөнүү менен)
Мүчөлөргө жетүү Түрүн өзгөртпөстөн (жүруу учурунда каталар коркунучу) Ачык түргө түрлөнүү же текшерүү талап кылынат
Колдонуу Экстремалдуу учурларда, түрү гана иштөө учурунда белгилүү болсо Ар кандай түрдөгү маанилерди сактоо, зарыл болсо ачык көзөмөл менен