SearchExpressionType
перечисление
Описание
Тип, используемый для описания выражения. Выражение может иметь несколько типов. Например, Set также является iterable. Ключевое слово также считается строчным значением. SearchExpressionType могут быть использованы с SearchExpressionEvaluatorAttribute для описания списка параметров оценщика.
[SearchExpressionEvaluator(SearchExpressionType.Iterable | SearchExpressionType.Variadic)] [SearchExpressionEvaluatorSignatureOverload(SearchExpressionType.Number, SearchExpressionType.Iterable | SearchExpressionType.Variadic)] [Description("Extract and returns the X first results for each expression.")] public static IEnumerable<SearchItem> TakeXFirst(SearchExpressionContext c) { var argIndex = 0; var takeNumber = 1; if (c.args[0].types.HasFlag(SearchExpressionType.Number)) { ++argIndex; takeNumber = Math.Max((int)(c.args[0].GetNumberValue(takeNumber)), 0); } for ( ; argIndex < c.args.Length; ++argIndex) { var iterable = c.args[argIndex].Execute(c); var taken = 0; foreach (var item in iterable) { if (item == null) yield return null; else { yield return item; ++taken; if (taken == takeNumber) { c.Break(); break; } } } } }
Свойства
| Свойство | Описание |
|---|---|
| Nil | Обозначает недействительное выражение. |
| Optional | Используется в SearchExpressionEvaluatorAttribute для указания параметра aprameter как необязательного. |
| Variadic | Используется в SearchExpressionEvaluatorAttribute, чтобы указать: параметр можно передавать несколько раз. Например, count{Iterable1, Iterable2,... IterableN} можно выполнить с любым числом итерируемых параметров. |
| Boolean | Обозначает буквальное выражение логического значения. |
| Number | Обозначает буквальное выражение числового значения. |
| Text | Обозначает выражение, представляющее текстовое (строковое) значение. |
| Selector | Обозначает выражение, представляющее селектор. Все селекторы начинаются с @. Например, @size в выражении: select{t:material, @size}. |
| Keyword | Обозначает выражение, дающее SearchExpressionKeyword. |
| Set | Обозначает итеративное выражение группы обычно буквальных значений. Например, [1, 2, 3] или [material, shader, texture2d]. |
| Function | Обозначает выражение функции-вычислителя. Например: count{}. |
| QueryString | Обозначает выражение, представляющее строку запроса. Например: t:shader. |
| Expandable | Обозначает выражение, использующее оператор... для указания, что оно может быть расширено. |
| Group | Обозначает выражение для группы элементов. Группы формируются вычислителем groupBy{}. |
| Literal | Обозначает выражение, построенное из буквальных значений: булевых, числовых, текстовых или ключевых. Например, в выражении набора [1,"hello",true] все значения набора являются буквальными. |
| Iterable | Обозначает выражение, по которому можно проходить, получая SearchItem. Множество: [1, 2, 3], строка запроса: t:shader и вычислитель: count{} — всё это примеры итерируемых объектов. |
| AnyValue | Обозначает выражение с типом значения: буквальное или повторяемое. |
| AnyExpression | Обозначает любое выражение любого типа (Literal, Iterable или Selector). |