因软件更新较快,部分文档内容与软件最新版本有所出入,请知悉。
概要
简单表达式与复杂表达式
简单表达式:相当于一个C#赋值语句的等号后面的部分。例如:
- 返回变量值加1的结果:
$= {数字变量} +1
- 判断变量值是否大于10:
$= {数字变量} > 10
复杂表达式:相当于一个返回特定内容的C#方法。例如:判断两个数字之中的较大值:
$=
if ({number1} > {number2})
{
return "较大值为number1:" + {number1};
}else{
return "较大值为number2:" + {number2};
}
辅助编写
快速切换到表达式模式
在参数输入框中按F1,可在表达式模式、插值模式、普通值模式之间快速切换。
表达式补全提示与验证
补全功能用于自动提示关键词、变量所支持的方法等内容。
注意事项:
- 补全功能在服务器端实现,需要您的电脑能正常访问网络。
- 补全内容与验证提示仅供参考。
- 表达式引擎不是一个完整的C#环境,有些补全提示的方法或关键词在表达式中不支持。
- 有一些在表达式中可以使用的类型,没有对应的补全提示。
开启补全:
表达式测试
在代码编辑窗口中编写表达式时,会自动开启“表达式测试”功能。
开启时,窗口右侧会显示表达式中所使用的变量的列表和表达式的计算结果。
可以修改变量的值,观察计算结果的变化。
布尔表达式助手
对于“如果”等模块中需要判断条件的参数(布尔类型),Quicker提供了一个“布尔表达式助手”功能。
点击布尔参数右侧的铅笔图标即可打开。
在表达式中使用内置对象
_context:动作上下文对象
可以用于在表达式中访问动作信息。
在需要的时候也可以进行一些hack处理,比如通过表达式更新变量的值等。
注:除非特别必要,不要在表达式中更新变量值。通过表达式更新的内容无法调试观察,在遇到问题时不好定位。
属性:
- ActionId:当前动作ID
- ActionTitle:当前动作标题
- IsRootContext:当前是否为主程序的动作上下文。(每个子程序在运行时会有自己的上下文对象)
方法:
- SetVarValue:更新变量值
- GetVarValue:获取变量值
- TryGetValue:尝试获取变量值,如果不存在则返回指定的默认值
- IsVarExists:变量是否存在
- GetRootContext:获取主程序的上下文对象
- GetParentContext:获取上一级子程序(或主程序)的上下文对象,自1.37.24版本提供。
- RunSp:执行子程序
- WriteState:写入动作状态
- ReadState:读取动作状态
- WriteCache:写入对象缓存。缓存对象在动作结束的时候仍然会保留在内存,可以在下次运行动作时取出。Quicker退出后缓存失效。
- ReadCache:读取对象缓存。
- UpdateVariablesFromDict:使用指定的词典对象更新变量。词典里key对应于变量名。(1.26.0+)
- UpdateVariablesFromJson:根据Json文本中的键值对更新变量。方便使用json文本格式的动作参数更新多个变量的值。(1.26.0+)
搜索框触发的动作,可以在表达式中使用 $=_context.ExtraData?.ActiveWindowBeforeSearch 获取搜索窗显示之前的活动窗口句柄。(1.39.10+)
_eval:表达式引擎对象
可用于在必要的时候注册在表达式中使用的其它类型。请参考表达式组件的官方文档。
注意:
- 需要单独的步骤注册类型后,在后面的步骤里才可以使用这些类型。
_qk: 一些内置功能的封装
其它信息
表达式中支持的类型
表达式引擎初始注册的类型:
EvalManager.DefaultContext.RegisterType(
typeof(Regex),
typeof(Path),
typeof(System.Linq.Enumerable),
typeof(JsonConvert),
typeof(JArray),
typeof(JObject),
typeof(JToken),
typeof(DateTime),
typeof(CommonExtensions)
);
还有一些表达式引擎内部注册的类型可以使用(部分):
- System.IO.Directory
- System.Globalization.CultureInfo
- System.Linq.Expressions.Expression
- System.IO.FileInfo
- System.IO.DirectoryInfo
- System.IO.File
- System.Text.RegularExpressions.Match
- System.Collections.ArrayList
- System.Text.StringBuilder
- System.Linq.Enumerable
- System.Collections.IEnumerable
- System.Diagnostics.Process
- System.Text.Encoding
- System.Dynamic.ExpandoObject
- DataSet、DataTable、DataRow、SqlDataReader、DataColumn、SqlDataAdapter、DbDataReader、DataView、SqlConnection
注:可以在VisualStudio调试环境中通过EvalContext对象的AliasTypes、AliasExtensionMethods等信息了解表达式中所支持的内容。