

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# FlexMatch 属性表达式
<a name="match-rules-reference-property-expression"></a>

属性表达式在规则集中用于引用与对战有关的某些属性。它们允许您在定义属性值时使用计算和逻辑。属性表达式通常采用以下两种形式之一：
+ 单个玩家数据
+ 计算出的个人玩家数据集合。

## 常见的对战属性表达式
<a name="match-rules-reference-property-expression-common"></a>

有效属性表达式标识单个玩家、团队或对战游戏的特定值。以下部分表达式说明了如何标识团队和玩家：


| Goal | Input | 含义 | Output | 
| --- | --- | --- | --- | 
| 标识对战游戏的特定团队： | teams[red] | 红队 | Team  | 
| 标识对战游戏的特定团队： | teams[red,blue] | 红队和蓝队 | List<Team> | 
| 标识对战游戏的所有团队： | teams[\$1] | 所有团队 | List<Team> | 
| 标识特定团队中的玩家： | team[red].players | 红队中的玩家  | List<Player> | 
| 标识特定团队中的玩家： | team[red,blue].players | 对战游戏的玩家 (按团队分组) | List<List<Player>> | 
| 标识对战游戏的玩家： | team[\$1].players | 对战游戏的玩家 (按团队分组) | List<List<Player>> | 

## 属性表达式示例
<a name="match-rules-reference-property-expression-examples"></a>

下表给出基于之前示例构建的部分有效属性表达式：


****  

| Expression | 含义 | 结果类型 | 
| --- | --- | --- | 
|  `teams[red].players[playerId]`  | 红 IDs 队所有球员中的球员 | List<string> | 
| teams[red].players.attributes[skill] | 红队所有玩家的“技能”属性 | List<number> | 
| teams[red,blue].players.attributes[skill] | 红队和蓝队所有玩家的“技能”属性，按队伍分组 | List<List<number>> | 
| teams[\$1].players.attributes[skill] | 对战游戏的所有玩家的“技能”属性 (按团队分组) | List<List<number>> | 

## 属性表达式聚合
<a name="match-rules-reference-property-expression-aggregation"></a>

属性表达式可用于使用以下函数或组合函数来聚合团队数据：


****  

| 聚合 | Input | 含义 | Output | 
| --- | --- | --- | --- | 
| min | List<number> | 获取列表中所有数字的最小值。 | 数字 | 
| max | List<number> | 获取列表中所有数字的最大值。 | 数字 | 
| avg | List<number> | 获取列表中所有数字的平均值。 | 数字 | 
| median | List<number> | 获取列表中所有数字的中值。 | 数字 | 
| sum | List<number> | 获取列表中所有数字的总和。 | 数字 | 
| count | List<?> | 获取列表中的元素数量。 | 数字 | 
| stddev | List<number> | 获取列表中所有数字的标准差。 | 数字 | 
| flatten | List<List<?>> | 将嵌套列表的集合变成包含所有元素的单个列表。 | List<?> | 
| set\$1intersection | List<List<string>> | 获取在集合的所有字符串列表中找到的字符串列表。 | List<string> | 
| 以上全部 | List<List<?>> | 对嵌套列表的所有操作会对每个子列表执行一次以生成结果列表。 | List<?> | 

下表给出使用聚合函数的部分有效属性表达式：


****  

| Expression | 含义 | 结果类型 | 
| --- | --- | --- | 
| flatten(teams[\$1].players.attributes[skill]) | 对战游戏中的所有玩家的“技能”属性 (未分组) | List<number> | 
| avg(teams[red].players.attributes[skill]) | 红队玩家的平均技能 | 数字 | 
| avg(teams[\$1].players.attributes[skill] | 对战游戏中的每个团队的平均技能 | List<number> | 
| avg(flatten(teams[\$1].players.attributes[skill])) | 对战游戏中的所有玩家的平均技能级别。该表达式获取玩家技能的展开列表，然后计算它们的平均值。 | 数字 | 
| count(teams[red].players) | 红队的玩家数量 | 数字 | 
| count (teams[\$1].players) | 对战游戏中的每个团队的玩家数量 | List<number> | 
| max(avg(teams[\$1].players.attributes[skill])) | 对战游戏中的最高团队技能级别  | 数字 | 