SearchExpressionContext
структура в UnityEditor.Search
Описание
Этот контекст содержит все данные, необходимые для оценки SearchExpression, и позволяет пользователю взаимодействовать с временем выполнения выражения. SearchExpressionContext создается автоматически с SearchExpressionRuntime при каждом вызове SearchExpression.Execute.
Вот пример, показывающий, как SearchExpressionContext используется во время оценки:
[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; } } } } }
Свойства
| Свойство | Описание |
|---|---|
| args | Аргументы, переданные SearchExpression, оцениваются. |
| expression | [[]SearchExpression] оценивается. |
| items | SearchItems, полученный путем оценки searchExpression. |
| runtime | SearchExpressionRuntime связан с этим контекстом. Время выполнения хранит все данные времени выполнения (фреймы стека, стек контекстов и элементов), необходимые для оценки SearchExpression. |
| search | SearchContex, содержащий поисковый запрос, который был проанализирован для создания SearchExpression. |
| valid | Допустим ли текущий контекст или нет. Если не допустим, это означает, что ассоциированный SearchExpression является нулевым или SearchExiressionRuntime не допустим. |
Открытые методы
| Метод | Описание |
|---|---|
| Break | Прервать оценку SearchExpression, что означает, что предметы больше не будут сдаваться. |
| Continue | Скажите SearchExpression оценке продолжить. |
| IsBreaking | Выявлен ли текущий контекст для прекращения исполнения? |
| IsContinuing | Является ли нынешний контекст основанием для продолжения исполнения? |
| ResetIterationControl | Перезапустить оценку и итерацию SearchExpression. |
| ResolveAlias | Попробуйте разрешить значение псевдонима с помощью SearchExpressionRuntime, прикрепленного к этому контексту. Каждый кадр, если его попросят разрешить SearchExpression.alias. |
| ThrowError | Остановка оценки SearchExpression путём выброса SearchExceptionEvaluatorException. Пользователь, пишущий оценщик, может решить выбросить эти исключения, если параметры, переданные для оценки, не являются действительными или если во время оценки возникла проблема. |
| ToString | Получить строковое представление контекста. |