Tree.Array

From SunFlurry wiki
Jump to: navigation, search
  [<Индекс значения (INT,STRING)>] (Получение или установка значения ветки)
Объект:Дерево
Статус разработки: Реализована
Тип:Атрибут
Обращение к БД:Нет
Доступность:Чтение и запись
Исключения:Невозможно превратить в строку, число, неверный индекс
Визуальность:Нет

Применимо к объектам ветки и дерева. Использование синтаксиса массивов позволяет получить или изменить значение подчиненной ветки дерева по его индексу (аргументом является число), либо наименованию (аргументом является строка). Для дерева, фрагмент <Дерево>[<Аргумент 1>,<Аргумент 2>,...] не равнозначен фрагменту <Дерево>[<Аргумент 1>][<Аргумент 2>,...], так как в первом случае первый аргумент будет использован для нахождения ветки, а не значения, а второй для нахождения значения внутри этой ветки (<Дерево>.ByIndex(<Аргумент 1>).Get(<Аргумент 2>)...), а во втором случае, аргумент используется для нахождения значения и дальнейшие аргументы будут применены к объекту, полученному из таблицы (<Дерево>.Get(<Аргумент 1>)...).

Синтаксис

Tree[<Индекс или наименование значения подчиненной ветки (INT,STRING)>,...]:<Значение или ветка>

Аргументы

  • <Индекс или наименование значения подчиненной ветки (INT,STRING)> - Индекс получаемого или устанавливаемого значения подчиненной ветки дерева. При указании более одного аргумента, будут последовательно найдены индексы подчиненных веток с первого индекса первого аргумента, до последнего. При чтении, если указанный путь отствует, будет возвращено пустое значение. При записи, если указанный путь отсутствует, он будет создан. Индекс может иметь следующие типы:
    • число: ветка значения будет найдено по ее числовому индексу (начиная с индекса 1). При получении значения будет выполнена операция, соответствующая фрагменту <Дерево>.Get(<Индекс>) или <Дерево>.ByIndex(<Индекс>) (в зависимости от наличия следующего аргумента), при установке значения, операция, соответствующая фрагменту <Дерево>.Set(<Индекс>,<Значение>).
    • строка: ветка значения будет найдено по ее наименованию. При получении значения будет выполнена операция, соответствующая фрагменту <Дерево>.GetByName(<Наименование>) или <Дерево>.FindByName(<Наименование>) (в зависимости от наличия следующего аргумента), при установке значения, операция, соответствующая фрагменту <Дерево>.SetByName(<Наименование>,<Значение>). Если наименование значение не найдено, будет возвращено или добавлено пустое значение.

Возвращаемое значение

Атрибут возвращает значение ветки, если оно не пустое (OT_NOTHING) или подчиненные ветки отствуют. Атрибут возвращает объект ветки, если ее значение пустое (OT_NOTHING) и имеются подчиненные ветки. Такой подход позволяет работать с объектом дерева, как с XML в нотации массивов.

Примеры

aTree:=Tree.Create();
aTree.Add(List.Create(132),"Ветка 1").Add(2,"Ветка 1.1");
aTree.Add(3,"Ветка 2");

//Будет выведено 2, соответствует операции aTree.ByIndex(1).Get(1)
Message("Значение ветки 1.1: "+aTree[1,1]);

//Будет выведено 132, соответствует операции aTree.Get(1).Get(1)
Message("Значение списка: "+aTree[1][1]);

//Ветка получит новое значение "Проверка" (предыдущее было 3), соответствует операции aTree.SetByName("Ветка 2","Проверка")
aTree["Ветка 2"]:="Проверка";