This work is licensed with Creative Commons Attribution 3.0 Unported License. You are able: - to Share — to copy, distribute and transmit the work - to Remix — to adapt the work Автор: Leonid Krashenko e-mail: Leonid.Krashenko@gmail.com Перевод данного руководства - одна из тем атома Org1 (орг ван), см. http://trac.assembla.com/org1/wiki/WikiStart = Ядро = В первых уроках по Танго мы обсудили процесс установки библиотеки и сборку первой программы. Мы обустроили процесс компиляции приложения на Ди и познакомились с системой импорта в Танго. Давайте посмотрим теперь, как на самом деле работает основная система Танго. Ядро формирует строительные кирпичики для всей библиотеки, сопровождая их полезными возможностями, шаблонами и функциями. В следующих пунктах мы обсудим модули {{{Tango.core}}} один за другим. Мы углубимся в каждый и продемонстрируем его использование. == Array (массив) == {{{ import tango.core.Array; }}} Массивы могут быть, наверное, одними из самых основных типов контейнеров в современных языках программирования, однако эта их гибкость и удобство использования трудно вписываются в высокоуровневые конструкции. Ди это понимает и дополняет традиционную концепцию массивов синтаксисом слайсов (кусков), повышающую эффективность и гибкость работы с данными контейнерами. Поскольку правильное использование массивов может быть возможно только в случае их простой применимости для реализации алгоритмов, Танго предоставляет класс {{{Array}}} для удовлетворения этой потребности. === Параметры === {{{{{{BitArray}}}}}} предоставляет ряд возможностей, позволяющих программисту устанавливать и считывать состояние инициализированной переменной. Рассмотрим их: '''''length''''' возвращает длину {{{{{{BitArray}}}}}} в битах. Она может пригодиться, если понадобится увеличить размер {{{BitArray}}} путем присвоения ему значения. '''''dim''''' возвращает размер {{{BitArray}}} в терминах компьютерного слова. Для 32-битных систем '''''dim''''' вернет размер {{{BitArray}}} в 32-битных словах. На 64-битной машине результат будет измеряться в 64-битных словах. Так, {{{BitArray}}} с параметром length, равным 64 битам вернет '''''dim''''', равным 1 на 64-битной машине, в то время как 32-битная машина вернет '''''dim''''', равным 2. Параметр '''''dup''''' осуществляет копирование {{{BitArray}}}. Он полезен при копировании одного {{{BitArray}}} в другой. {{{ #!cpp import tango.core.{{{BitArray}}}, tango.io.Stdout; void main() { {{{BitArray}}} bitbag( 1,1,1,0,1 ); // Взять длину в битах Stdout.format ("length: {0}", bitbag.length ).newline; // установить длину путем присвоения bitbag.length = 6; // или путем вызова метода bitbag.length( 6 ); // достать размерность bitbag-а Stdout.format ("'''''dim''''': {0}", bitbag.'''''dim''''' ).newline; // Скопировать содержание bitbag-а и поместить его // в tempbag {{{BitArray}}} tempbag = bitbag.'''''dup'''''; } }}} Обратите еще раз внимание на то, как мы можем установить параметр length. Ди позволяет использовать стиль присвоения или стиль вызова метода для установки значений параметров. Использование параметра length таким способом - общепринятая практика программирования на Ди. Далее, параметр '''''dim''''' на 32-битной машине должен вернуть 1, которая будет напечатана на экран, т.к. все биты умещаются в 32-битное значение. Наконец, '''''dup''''' дублирует содержимое bitbag-а и помещает его в tempbag.