List.Combine

From SunFlurry wiki
Jump to: navigation, search
  Combine (Операции объединения списков)
Объект:Список
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Список только для чтения, невозможно превратить в строку, число, неверные аргументы.
Визуальность:Нет

Функция выполняет операцию, заданную вторым аргументом, над текущим списком и списком, заданным первым аргументом. Операция выполняется над значениями списков. Результат сохраняется в текущем списке.

Синтаксис

List.Combine(<Список для операции (LIST)>,<Тип операции (STRING)>="ADD",<Список сортирован (INT)>=0)

Аргументы

  • <Список для операции (LIST)> - Объект типа Список, с помощью которого будет выполнена операция.
  • <Тип операции (STRING)> - (необязательный аргумент) Тип выполняемой операции. Возможны следующие значения:
    • AND: Конъюнкция двух списков. Результат будет содержать список, элементы которого входили одновременно в исходный и во второй списки. Дублирующиеся значения исходного массива будут сохранены, если значение входило во второй массив.
    • OR, ADD: Дизъюнкция двух списков (по умолчанию) (логическое сложение). Результат будет содержать список, элементы которого входили либо в исходный, либо во второй списки. В результат не добавляются дубли из второго списка. Если дубли не имеют значения, быстрее воспользоваться функцией CopyTo.
    • XOR: Неэквивалентность двух списков. Результат будет содержать список, элементы которого входили либо в исходный, либо во второй список, но не одновременно в оба.
    • SUB: Логическое вычитание двух списков. Соответствует операции <Аргумент 1> XOR (<Аргумент 1> AND <Аргумент 2>). Результат будет содержать список, элементы которого входили в первый список, но не входили во второй список.
  • <Список сортирован (INT)> - (необязательный аргумент) Признак того, что список уже сортирован (по умолчанию 0). Если список сортирован, системе не потребуется сортировать его перед выполнением операции, тем самым увеличивая скорость выполнения функции. Нужно также заметить, что даже если система сортирует список перед операцией, в результирующем списке эта виртуальная сортировка будет отсутствовать.

Примеры

//Демонстрация операции "ADD"
aList:=List.Create("AB",0,0,1,2,3,4,"BA","ABC","BA",7,2,2.5);
bList:=List.Create("AB",1,1,0,2,5,4,"BAD","ABC","AB",2.5,2,1.5,1.5);
//Результат будет содержать: "AB",0,0,1,2,3,4,"BA","ABC","BA",7,2,2.5,5,"BAD",1.5
aList.Combine(bList,"ADD");

//Демонстрация операции "AND"
aList:=List.Create("AB",0,0,1,2,3,4,"BA","ABC","BA",7,2,2.5);
bList:=List.Create("AB",1,1,0,2,5,4,"BAD","ABC","AB",2.5,2,1.5,1.5);
//Результат будет содержать: "AB",0,0,1,2,4,"ABC",2,2.5
aList.Combine(bList,"AND");

//Демонстрация операции "XOR"
aList:=List.Create("AB",0,0,1,2,3,4,"BA","ABC","BA",7,2,2.5);
bList:=List.Create("AB",1,1,0,2,5,4,"BAD","ABC","AB",2.5,2,1.5,1.5);
//Результат будет содержать: 3,"BA","BA",7,5,"BAD",1.5,1.5
aList.Combine(bList,"XOR");

//Демонстрация операции "SUB"
aList:=List.Create("AB",0,0,1,2,3,4,"BA","ABC","BA",7,2,2.5);
bList:=List.Create("AB",1,1,0,2,5,4,"BAD","ABC","AB",2.5,2,1.5,1.5);
//Результат будет содержать: 3,"BA","BA",7
aList.Combine(bList,"SUB");