Sobes.tech
Middle

Конструкторҳои доимӣ дар Dart чӣ кор карданро имкон медиҳанд?

sobes.tech AI

Ҷавоб аз AI

Дартада доимий куруучулар, объектларни тузишга имкон беради, улар тузилиш вақтида доимий ҳисобланади. Бу, объектнинг қиймати тузилиш вақтида маълум бўлишини англатади, фақат ишга тушириш вақтида эмас.

Доимий куруучулардан фойдаланишнинг афзаллиги:

  • Ишлаш самарадорлиги: Доимий куруучулар билан яратилган объектлар компилятор томонидан кешга олинади. Агар бир неча бир хил доимий объектлар яратилса, улар ҳақиқатан ҳам хотирада бир хил намунага ишора қилади, бу янги объектларни яратиш харажатларини камайтиради ва хотира сарфини пасайтиради.
  • Самарадорлик: Кодни тузилиш вақтида оптималлаштириш имконини беради.
  • Доимий ифодаларда фойдаланиш: Доимий куруучудан яратилган объектлар бошқа доимий ифодаларда, масалан, const декларацияларида фойдаланилиши мумкин.

Доимий куруучудан фойдаланиш шартлари:

  • Синфнинг барча майдонлари final бўлиши керак.
  • Курувчи тана бўш ёки фақат ота-сифати (super()) чақиришни ўз ичига олиши керак.
  • Курувчи const калит сўз билан белгиланган бўлиши керак.

Масалан:

class Point {
  final double x;
  final double y;

  // Доимий курувчи
  const Point(this.x, this.y);
}

void main() {
  // Доимий объектларни яратиш
  const Point p1 = Point(0.0, 0.0);
  const Point p2 = Point(0.0, 0.0);

  // p1 ва p2 хотирада бир хил объектга ишора қилади
  print(p1 == p2); // true чиқаради
}