动态脚本变量
动态变量通过执行语句和逻辑表达式来计算自己的值。 动态变量为自己分配计算或操作的结果。 动态变量类型包括动态字符串、动态数字和动态 True/False(布尔值)。
在用户界面中,动态变量由闪电符号指定,以区分它们与其他变量类型。 动态变量的值是类似于 JavaScript 的语句的结果,其中可以包括选定的 Math.js 表达式和 Genesys 开发的其他函数。 请参阅 算术运算符和函数、 MathJS 函数引用以及可在动态变量中使用的 其他函数。 动态变量中的逻辑表达式可以计算其他变量的状态。
每种动态变量类型都允许您嵌入表达式。 这些语句定义变量的值,可能基于其他变量。 结果必须与动态变量的类型匹配。 例如,动态字符串中的代码必须求值为字符串值。
math.add (1,3),则将其
转换为动态变量 中的
add (1,3)。 或者,如果 MathJS 文档中的示例代码类似于 math.fraction(分子、分母)
,则等效的动态数变量就是分数(分子、分母) 部分。
至于赋值给动态变量,你不会显式这样做;最后评估的值将分配给动态变量。 例如,如果将这些表达式作为动态变量输入:
x = 5; y = x + 2; x
所有三个表达式都按自上而下的顺序进行计算 最后一个表达式的值将分配给动态变量。 在此示例中,x 的值为 5,该值分配给动态变量。
示例 1: 使用动态数字计算用户在表单上的输入
在此示例中,动态数字变量计算表单中输入的多个值的结果。
在设计模式下,垂直堆叠的输入框会提示用户输入。
在预览模式或运行时,表单上输入的值由 dnum_testnum
变量中的语句计算,并显示结果。
dnum_testnum
变量包含执行此计算的公式:
{{num_var1}} + {{num_var2}} - {{num_var3}} * {{num_var4}} / {{Num_TestNum}} + 2.1
对于上面显示的值,计算结果为:
10 + 10 - 4 * 2 / 2 + 2.1
只要计算使用的变量之一发生更改,就会执行计算。
在所示示例中,存储在 dnum_Testnum 中的结果
为 18.1。
示例 2: 使用动态 True/False(布尔值)来确定数字变量是否匹配
在此示例中,如果数字输入匹配,则动态布尔变量返回 true
; 如
果数字输入不匹配,则返回 false。
在设计模式下,页面显示两个数字输入,其值存储在数字变量中。 动态布尔值中的代码会比较它们的相等性。
在预览模式或运行时,会比较表单中输入的值是否相等。
dbool_Basic 中的公式
是:
{{num_dBoolTest}} == {{num_dBoolTest2}}
对于显示的值, dbol_Basic 的值
为 假,
因为 2 不等于 1。
每当任一输入变量的值发生变化时,都会计算结果。
示例 3: 字符串操作
在接下来的两个示例中, 动态字符串变量解析并重写用户输入。 dstr_exP
变量中的表达式将用户键入的文本重写为 “这很有趣”。 当复选框更改状态时, DSTR_Test 中的表达式会
反转大小写。
用户输入的文本存储在 str_overwrite 中
。 下面是 执行此表达式的动态变量
dstr_exp:
slice("This is fun.", 0 ,length({{str_overwrite}}))
在预览模式或运行时,任何键入的文本都会被重新措辞。 当 str_Overwrite 的值发
生变化时,该字符串将被重写。
“交换下限和上限” 复选框可切换 DSTR_Test 的大小写
。 它的公式是:
ifElse({{bool_swapLowerUpper}} == false, lower(slice({{str_HELLO worlds}}, 0, length({{str_HELLO worlds}})-6)) + " " + upper(slice({{str_HELLO worlds}}, length({{str_HELLO worlds}})-6)), upper(slice({{str_HELLO worlds}}, 0, length({{str_HELLO worlds}})-6)) + " " + lower(slice({{str_HELLO worlds}}, length({{str_HELLO worlds}})-6)))
选中该框可反转字符串的大小写。
示例 4: 使用正则表达式验证字符串和数字
在此示例中,动态布尔变量返回真的
如果字符串输入与提供的正则表达式匹配:
这里使用的正则表达式是^\\d{1,4}$:
– 核心正则表达式是\d{1,4}
(一到四位数字之间):斜杠被加倍(转义),因为它是一个 JavaScript 字符串,并且它被包裹在^
和$
将模式应用于整个字符串:默认情况下,允许部分匹配,因此如果没有此包装,12345 将因部分匹配“1234”而通过。
有关正则表达式及其调试的更多详细信息,请参阅正则表达式。