版本: Unity 6 (6000.0)
语言英语
  • C#

SearchExpressionType

枚举

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们会阅读用户提出的每一项建议,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请 <a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

用于描述表达式的类型。表达式可能具有多种类型。例如,Set 也是可迭代的。关键字也被认为是字符串值。 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表示无效的表达式。
可选在 SearchExpressionEvaluatorAttribute 中使用,指定参数为可选。
可变参数在 SearchExpressionEvaluatorAttribute 中使用,指定参数可以多次使用。例如,count{Iterable1, Iterable2,... IterableN} 可以使用任何数量的可迭代参数执行。
布尔值表示布尔值文字表达式。
数字表示数值文字表达式。
文本表示文本(字符串)值的表达式。
选择器表示选择器的表达式。所有选择器都以 @ 开头。例如,表达式中的 @size:select{t:material, @size}。
关键字表示产生 SearchExpressionKeyword 的表达式。
集合表示一组通常为文字值的 iterable 表达式。例如 [1, 2, 3] 或 [material, shader, texture2d]。
函数表示评估器函数的表达式。例如:count{}。
查询字符串表示查询字符串的表达式。例如:t:shader。
可扩展表示使用 ... 运算符的表达式,以告知其可以扩展。
表示一组项目的表达式。组由 groupBy{} 评估器生成。
文字表示由文字值构建的表达式:布尔值、数字、文本或关键字。例如,在集合表达式 [1,"hello",true] 中,所有集合值都是文字值。
可迭代表示可以迭代以产生 SearchItem 的表达式。集合: [1, 2, 3]、查询字符串: t:shader 和评估器: count{} 都是可迭代的示例。
任意值表示具有值类型的表达式:文字或可迭代。
任意表达式表示任何类型的表达式(文字、可迭代或选择器)。