用于描述表达式的类型。表达式可能具有多种类型。例如,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{} 都是可迭代的示例。 |
任意值 | 表示具有值类型的表达式:文字或可迭代。 |
任意表达式 | 表示任何类型的表达式(文字、可迭代或选择器)。 |