Sobes.tech
Middle

Ի՞նչ է թույլ տալիս անել կայուն կոնստրուկտորները Dart-ում։

sobes.tech AI

Պատասխան AI-ից

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

Мўҳтаёжий конструкторлардан фойдаланишнинг афзаллиги:

  • Ишлаш самарадорлиги: Мўҳтаёжий конструкторлар билан яратилган объектлар компилятор томонидан кешга олинади. Агар бир неча бир хил мўҳтаёжий объектлар яратилса, улар ҳақиқатан ҳам хотирада бир хил намунага ишора қилади, бу янги объектларни яратиш харажатларини камайтиради ва хотира сарфини пасайтиради.
  • Самарадорлик: Кодни тузилиш вақтида оптималлаштириш имконини беради.
  • Доимий ифодаларда фойдаланиш: Мўҳтаёжий конструктор билан яратилган объектлар бошқа доимий ифодаларда, масалан, 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 чиқаради
}