Unity 6.3
0 онлайн 54 гостей 3 в системе
Вход

IQueryEngineFilter.AddTypeParser

Declaration

public Search.IQueryEngineFilter AddTypeParser(Func<string,ParseResult<TFilterConstant>> parser);

Параметры

Параметр Описание
анализатор Обратный вызов, используемый для определения того, может ли строка быть преобразована в "TFilterConstant". Берёт строку и возвращает объект ParseResult. Этот объект содержит флаг успеха и фактическое преобразованное значение в случае успеха.

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

IQueryEngineFilter Текущий фильтр.

Описание

Добавить анализатор типов, специфичный для фильтра.

Добавить специфический для фильтра анализатор типов, который анализирует строку и возвращает пользовательский тип. Используется обработчиками пользовательских операторов. Этот анализатор типов будет использоваться только этим фильтром и не будет влиять на другие фильтры.

// Add a new type parser for Vector2 written as "[x, y]", but only for this filter.
// This type parser will not affect other filters.
queryEngine.TryGetFilter("p", out var filter);
filter.AddTypeParser(s =>
{
    // If the format requirement is not met, return a failure.
    if (!s.StartsWith("[") || !s.EndsWith("]"))
        return ParseResult<Vector2>.none;

    var trimmed = s.Trim('[', ']');
    var vectorTokens = trimmed.Split(',');
    var vectorValues = vectorTokens.Select(token => float.Parse(token, CultureInfo.InvariantCulture.NumberFormat)).ToList();
    if (vectorValues.Count != 2)
        return ParseResult<Vector2>.none;
    var vector = new Vector2(vectorValues[0], vectorValues[1]);

    // When the conversion succeeds, return a success.
    return new ParseResult<Vector2>(true, vector);
});

Полный пример см. в IQueryEngineFilter.