动态脚本变量
动态变量通过执行语句和逻辑表达式来计算自己的值。 动态变量为自己分配计算或操作的结果。 动态变量类型包括动态字符串、动态数字和动态 True/False(布尔值)。
在用户界面中,动态变量由闪电符号指定,以区分它们与其他变量类型。 动态变量的值是类似于 JavaScript 的语句的结果,其中可以包括选定的 Math.js 表达式和 Genesys 开发的其他函数。 请参阅 算术运算符和函数、 MathJS 函数引用以及可在动态变量中使用的 其他函数。 动态变量中的逻辑表达式可以计算其他变量的状态。
每种动态变量类型都允许您嵌入表达式。 这些语句定义变量的值,可能基于其他变量。 结果必须与动态变量的类型匹配。 例如,动态字符串中的代码必须求值为字符串值。
math.add(1,3),
convert that to add(1,3)
in your dynamic variable. Or, if example code in the MathJS documentation is something like math.fraction(numerator, denominator)
, the equivalent dynamic number variable is the fraction(numerator, denominator)
part.至于赋值给动态变量,你不会显式这样做;最后评估的值将分配给动态变量。 例如,如果将这些表达式作为动态变量输入:
x = 5; y = x + 2; x
所有三个表达式都按自上而下的顺序进行计算 最后一个表达式的值将分配给动态变量。 在此示例中,x 的值为 5,该值分配给动态变量。
示例 1: 使用动态数字计算用户在表单上的输入
在此示例中,动态数字变量计算表单中输入的多个值的结果。
在设计模式下,垂直堆叠的输入框会提示用户输入。
In preview mode or at run time, values entered on the form are calculated by statements in the dNum_TestNum
variable, and the result is shown.
The dNum_TestNum
variable contains the formula that performs this calculation:
{{num_var1}} + {{num_var2}} - {{num_var3}} * {{num_var4}} / {{Num_TestNum}} + 2.1
对于上面显示的值,计算结果为:
10 + 10 - 4 * 2 / 2 + 2.1
只要计算使用的变量之一发生更改,就会执行计算。
In the example shown, the result stored in dNum_TestNum
is 18.1.
示例 2: 使用动态 True/False(布尔值)来确定数字变量是否匹配
In this example, a dynamic Boolean variable returns true
if numeric inputs match or false
if they don’t match.
在设计模式下,页面显示两个数字输入,其值存储在数字变量中。 动态布尔值中的代码会比较它们的相等性。
在预览模式或运行时,会比较表单中输入的值是否相等。
The formula in dBool_Basic
is:
{{num_dBoolTest}} == {{num_dBoolTest2}}
For the values shown, the value of dBool_Basic
is false
since 2 does not equal 1.
每当任一输入变量的值发生变化时,都会计算结果。
示例 3: 字符串操作
In the next two examples, dynamic string variables parse and rewrite user input. An expression in the dStr_Exp
variable rewrites text typed by the user to “This is fun.” An expression in dStr_Test
inverts case when a check box changes state.
Text input by the user is stored in str_overwrite
. Below that is dynamic variable dStr_Exp
performing this expression:
slice("This is fun.", 0 ,length({{str_overwrite}}))
In preview mode or at runtime, any text typed is reworded. The string is rewritten when the value of str_overwrite
changes.
The Swap Lower and Upper check box toggles the case of dStr_Test
. Its formula is:
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: 使用正则表达式验证字符串和数字
In this example, a dynamic Boolean variable returns true
if the string input matches the provided regex:
The regex used here is ^\\d{1,4}$:
– the core regex is \d{1,4}
(between one and four digits): the slash is doubled (escaped) because it is a JavaScript string, and it is wrapped in ^
and $
to apply the pattern to the whole strings: by default, partial matches are allowed so without this wrapping, 12345 would pass because of the partial match “1234”.
有关正则表达式及其调试的更多详细信息,请参阅正则表达式。