Sobes.tech
Junior — Middle

Фарқи истифодаи dynamic, var ва Object дар муайян кардани намудҳои маълумот дар забони барномасозӣ чист?

sobes.tech AI

Ҷавоб аз AI

Дар тилда (Flutterда ишлатилган) dynamic, var ва Object турли хусусиятларга эга:

  • var — номаълум турга эга ўзгарувчи, тур инициализация пайтида белгиланади ва кейинчалик мустаҳкамланади. Масалан:
var x = 10; // x — int
x = 20; // OK
x = 'сатр'; // Компиляция хатоси
  • dynamic — тури ишга туширилганда текшириладиган ўзгарувчи, компилятор турларни берилишда ёки методларни чақиришда текшорамайди:
dynamic y = 10;
y = 'сатр'; // OK
print(y.length); // Фақат ишга тушириш вақтида хатолик, агар length мавжуд бўлмаса
  • Object — барча турлар учун асосий синф, Object туридаги ўзгарувчи ҳар қандай объектни сақлай олади, лекин махсус методларни чақириш учун турни айлантириш керак:
Object z = 10;
// z.length; // Компиляция хатоси
if (z is String) {
  print(z.length); // Тури текширилгандан кейин OK
}

Хулоса:

  • var — тур инициализацияда белгиланади.
  • dynamic — турлар текширувини ўчиради, эластик, аммо камроқ хавфсиз.
  • Object — асосий тур, махсус операциялар учун аниқ турга ўтказиш талаб қилинади.