求值表达式 (Eval)
TIP
与查询表达式不同,求值表达式是一组静态 API。你可以从 Koishi 中直接导入:
ts
import { $ } from 'koishi'类型定义
{Type}
本节中使用的 Number, String, Boolean, Any 并非 JavaScript 中的内置函数,而是对应于 number, string, boolean, any 类型的求值表达式。例如,当一个表的 foo 字段有数值类型时,求值表达式 $.gt(row.x, 1) 是合法的,并且返回值的类型是 Boolean。
ts
type $Date = Date
type $RegExp = RegExp
namespace Eval {
type Number = number | EvalExpr<number>
type String = string | EvalExpr<string>
type Boolean = boolean | EvalExpr<boolean>
type Date = $Date | EvalExpr<$Date>
type RegExp = $RegExp | EvalExpr<$RegExp>
type Any = string | number | boolean | $Date | $RegExp | EvalExpr<any>
}EvalExpr
本节中任意求值表达式的返回值。
数值运算
$.add(...values)
- values:
Number[]待相加的值 - 返回值:
EvalExpr<number>
将一组值相加。
$.subtract(x, y)
- x:
Number被减数 - y:
Number减数 - 返回值:
EvalExpr<number>
将两个值相减。
$.multiply(...values)
- values:
Number[]待相乘的值 - 返回值:
EvalExpr<number>
将一组值相乘。
$.divide(x, y)
- x:
Number被除数 - y:
Number除数 - 返回值:
EvalExpr<number>
将两个值相除。
比较运算
$.eq(...values)
- values:
Any[]待比较的值 - 返回值:
EvalExpr<boolean>
判断一组值是否相等。
$.ne(x, y)
- x:
Any待比较的值 - y:
Any待比较的值 - 返回值:
EvalExpr<boolean>
判断 x != y。
$.gt(x, y)
- x:
Number待比较的值 - y:
Number待比较的值 - 返回值:
EvalExpr<boolean>
判断 x > y。
$.gte(x, y)
- x:
Number待比较的值 - y:
Number待比较的值 - 返回值:
EvalExpr<boolean>
判断 x >= y。
$.lt(x, y)
- x:
Number待比较的值 - y:
Number待比较的值 - 返回值:
EvalExpr<boolean>
判断 x < y。
$.lte(x, y)
- x:
Number待比较的值 - y:
Number待比较的值 - 返回值:
EvalExpr<boolean>
判断 x <= y。
字符串运算
$.concat(...values)
- values:
String[]待连接的值 - 返回值:
EvalExpr<string>
连接一组字符串。
布尔运算
$.and(...values)
- values:
Boolean[]待计算的值 - 返回值:
EvalExpr<boolean>
将一组布尔值做与运算。
$.or(...values)
- values:
Boolean[]待计算的值 - 返回值:
EvalExpr<boolean>
将一组布尔值做或运算。
$.not(values)
- values:
Boolean待计算的值 - 返回值:
EvalExpr<boolean>
将一个布尔值取反。
聚合运算
$.sum(x)
- x:
Number数值表达式 - 返回值:
EvalExpr<number>
累加一组值。
$.avg(x)
- x:
Number数值表达式 - 返回值:
EvalExpr<number>
计算一组值的平均值。
$.min(x)
- x:
Number数值表达式 - 返回值:
EvalExpr<number>
计算一组值的最小值。
$.max(x)
- x:
Number数值表达式 - 返回值:
EvalExpr<number>
计算一组值的最大值。
$.count(x)
- x:
Any任意表达式 - 返回值:
EvalExpr<number>
统计不同元素的数量。
Koishi