ru:toolworks:docs:apparatus:filter

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

ru:toolworks:docs:apparatus:filter [2021/06/15 14:46] – создано + переведено. Требует проверки. Статья кстати интересная, но непонятно, что такое загруженные сущности jisparru:toolworks:docs:apparatus:filter [2022/01/05 15:13] (текущий) – обновил в соответствии с англоязычной версией jispar
Строка 1: Строка 1:
 ====== Фильтры ====== ====== Фильтры ======
  
-Фильтры предоставляют возможность сужать процесс итерирования до сущностей и объектов типа "сущностный", обладающих только заданными комбинациями трейтов и деталей. Фильтрация может быть как включающей (позитивной), так и исключающей (негативной). Включение означает, что сущность (или объект сущностного типа) определённо должен содержать трейты (или детали) из списка. Исключение означает противоположное - сущность должна *не* иметь выбранные элементы.+//Примеч.: деталь или трейт сущности или сущностного объекта в этой статье будем называть Part (Компонентом).//
  
-Оба указанных способа могут и должны быть использованы друг с другом. Помните, что Apparatus сильно оптимизирован для всех типов фильров, он не выполняет поэтапный поиска использует быстрые процедуры сравнения масок. Грубо говоря, тестирование одного фильтра, состоящего из 100 деталей, будет таким же, как если бы он содержал в себе одну.+Фильтры предоставляют возможность сужать процесс [[ru:toolworks:docs:apparatus:iterating|итерирования]] (или [[ru:toolworks:docs:apparatus:operating|оперирования]]) до сущностей и сущностных объектов, обладающих только заданными комбинациями компонентов. Спецификация фильтра представлена специальной структурой, называемой //Filter//.  
 +Фильтрация может быть как включающей (позитивной), так и исключающей егативной). В Аппарате вы можете комбинировать любые типы компонентовт.е. как трейты, так и детали могут быть __одновременно использованы__ в одном фильтре.
  
-===== Организация в C++ =====+===== Включение =====
  
-Вы создаёте инстанцию [[appi>struct_f_fingerprint.html|FFingerprint]]-а. Есть несколько разных конструкторов и методов, доступных для этой структуры, и вы можете использовать всё, что будет пригодно в конкретном случае. Например, давайте создадим фильтр одного трейта и одной деталидействительного только для загруженных (Booted /* не понял, что это такое, неплохо бы статью про это */) сущностей:<code cpp> +Включение означает, что сущность (или сущностный объект) определённо должен содержать указанный компонент, чтобы фильтр отобрал её (егодля обработки механикой. Фильтр по включению для деталей поддерживает наследование, поэтому если вы активируете включение базового класса детали в фильтре, то детали-потомки указанной детали будут включены в обработку механикой.
-#include "Filter.h"+
  
-...+===== Исключение =====
  
-FFilter MyFilter(EBootFilter::Booted)+Исключение означает противоположное. Сущность (или сущностный объектдолжен __не__ содержать в себе указанный компонент, чтобы фильтр её (егоотобрал для обработки механикой. 
-Filter += UMyDetail::StaticClass()+
-Filter += FMyTrait::StaticStruct(); +
-</code>+
  
-Теперь вы можете использовать собранный фильтр, чтобы объединять в цепи ремни и чанки и итерироваться по ним.+Оба указанных способа могут и должны быть использованы друг с другом. Помните, что Аппарат сильно оптимизирован для всех типов фильтров, он не выполняет поэтапный поиск, а использует быстрые процедуры сравнения масок. Грубо говоря, тестирование одного фильтрасостоящего из 100 деталей, будет таким же, как если бы он содержал в себе одну. 
 + 
 +===== Организация в C++ ===== 
 + 
 +Вы создаёте инстанцию [[appi>struct_f_filter.html|FFilter]]-а. Есть несколько разных конструкторов и методов, доступных для этой структуры, и вы можете использовать всё, что будет пригодно в конкретном случаеНапример, давайте создадим фильтр одного трейта и одной детали: 
 +<code cpp> 
 +FFilter MyFilter = FFilter::Make<UMyDetail, FMyTrait>(); 
 +</code>
  
 +Теперь вы можете использовать собранный фильтр, чтобы [[ru:toolworks:docs:apparatus:enchaining|объединять в цепи]] ремни и чанки и итерироваться по ним.
  • ru/toolworks/docs/apparatus/filter.1623757606.txt.gz
  • Последнее изменение: 2021/06/15 14:46
  • jispar