Sobes.tech
Middle

Dartda dynamic turi bilan object turi o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

  • dynamic ko'rsatadiki, o'zgaruvchining turi bajarilish vaqtida o'zgarishi mumkin. Turi tekshiruvi kompilatsiya bosqichida o'chirilgan. Bu bajarilish vaqtida xatolarga olib kelishi mumkin.
  • Object Dart'da barcha obyektlarning asosiy sinfi. Object turidagi o'zgaruvchi har qanday qiymatni saqlay oladi, lekin uning xususiyatlari va metodlariga kirish uchun aniq turga o'tkazish (cast) yoki is bilan tur tekshiruvi qilish kerak. Turi tekshiruvi kompilatsiya bosqichida amalga oshiriladi.

Misol:

// Dynamic - kompilatsiya bosqichida tur tekshiruvi yo'q
dynamic myDynamicVariable = 10;
myDynamicVariable = "salom"; // Ruxsat etilgan

// Object - tur tekshiruvi yoki o'tkazish kerak
Object myObjectVariable = 10;
// print(myObjectVariable.length); // O'tkazmasdan kompilatsiya xatosi

if (myObjectVariable is int) {
  // Xavfsiz tarzda int sifatida foydalanish
  int value = myObjectVariable;
  print(value + 5);
}

Asosiy farqlar jadvalda qisqacha:

Xususiyat dynamic Object
Tur tekshiruvi Kompilatsiya bosqichida o'chirilgan Kompilatsiya bosqichida amalga oshiriladi
Xavfsizlik Past (bajarilish vaqtida xatoliklar xavfi) Yuqori (an'anaviy o'tkazish bilan)
A'zolarga kirish O'tkazmasdan (bajarilish vaqtida xatolik xavfi) Aniq o'tkazish yoki tekshirish talab qilinadi
Foydalanish Ekstremal hollarda, faqat bajarilish vaqtida ma'lum bo'lsa Har qanday turdagi qiymatlarni saqlash, kerak bo'lsa aniq nazorat bilan