運算式
運算式是指令碼中用於比較值或產生值的任何內容。例如,如果以比較數值或得出數值的方式使用,則
前面的範例也可以是賦值語句。賦值語句將等號右邊的值賦給左邊的變數。變數賦值不是運算式。
運算式可用於:
- 執行數學或代數計算。
- 比較兩個值,並根據比較結果執行動作。
- 根據運算式的真假值做出邏輯判斷。
運算式中比較的值可以由字母、數字或兩者的組合組成。它們還可以包含變數。在 Studio 中,有三種運算式:數字運算式、字串運算式和布爾值運算式。
嘗試一下
下載運算式範例指令碼並將 匯入到 Studio中。本說明頁面中的範例可在範例指令碼中的
數字運算式
數字運算式只包括數字和數學或布爾值 運算子,如 +、 - 等。如果變數包含計算中使用的數值,它們還可以包括變數引用。
數字運算式用於 snippet 和配置 Studio 動作的屬性。例如,在 IF 動作中,您可以在 Expression 屬性中配置要評估的運算式,作為動作的決策機制。您可以使用
數字運算式語法
數字運算式中使用的變數不要用大括號和雙引號括起來。這會導致指令碼出錯。
數字運算式求值
在數字運算式中,如果指令碼可以將數值評估為數字,它就會這樣做。這表示:
- 任何不能以數值形式求值的內容,如字母或單詞,都會被假定為變數引用。
- 如果運算式中的非數字字元是指令碼中帶有字串值的變數,則指令碼會忽略非數字字元,並運算原始運算式的數字部分。
- 如果運算式中的非數字字元是具有數值的變數,則指令碼會在運算運算式時包含該數值。
- 如果運算式中的非數字字元不是指令碼中的變數,則指令碼會忽略原始運算式中的這些字元。
在下面的範例中,指令碼嘗試將 nextNum 作為變數來求值,因為它不能作為數字進行求值:c1 = 123 + 456 + nextNum.下面的範例顯示了三種情況的結果,具體取決於 nextNum 是否是變數及其值是多少。
當 nextNum 是一個具有字串值的變數時,則結果為 c1 = 579:
ASSIGN nextNum = "my string"
ASSIGN c2 = 123 + 456 + nextNum
當 nextNum 是一個具有數值的變數時,則結果為 c2 = 1368:
ASSIGN nextNum = 789
ASSIGN c3 = 123 + 456 + nextNum
當 nextNum 不是變數時,則結果為 c3 = 579:
ASSIGN c3 = 123 + 456 + nextNum
如果求值運算式包含兩個變數,而這兩個變數都包含被視為字串值的數值,則指令碼會將數值轉換為數字並進行相應的求值。下面範例的結果是 c4 = 50:
ASSIGN nextNum = "20"
ASSIGN otherNum = "30"
ASSIGN c4 = nextNum + otherNum
您可以用大括號將運算式括起來,從而在字串值中包含數字運算式。範例:
ASSIGN nextNum = 6
ASSIGN otherNum = 7
ASSIGN c5 = "There are {nextNum + otherNum} fish in the aquarium."
帶前置零的數字
當數字被當作字串處理時,Studio 處理數字的方式被視作數字時的處理方式有所不同。當數字被視為字串時,它們可以有前置零。如果將兩個包含有前置零的數字字串值的變數相加,前置零將被刪除。例如,以下運算式的結果是 c6=59:
ASSIGN nextNum = "00020"
ASSIGN otherNum = "000039"
ASSIGN c6 = nextNum+otherNum
如果您需要結果值有前置零,可以使用
字串運算式
字串運算式包括英數和特殊字元,如 #、@ 等。字串運算式的語法與為變數指派字串值的語法類似:
- 在 snippet 中,運算式的字串值必須始終用單引號或雙引號括起來。這與字串值相同
- 要在字串運算式中使用變數替換,請用大括號括住變數名。
- 某些字元(如雙引號)被視為代碼。要在字串值中包含這些字元,必須使用轉義序列。
字串比較
字串可以作為布爾值運算式中的值進行求值。例如,您可以在
客戶 = "Grendel Cainson"
當客戶包含精確值 Grendel Cainson 時,結果為 true。對於任何其他值,結果均為 false。
在字串比較中可以使用大於和小於 運算子。在這種比較中,每個字母字元都被賦值(A = 1 和 Z = 26)。指令碼開始比較第一個字元。如果不相同,則以字母表中較後的字母開頭的字元較大。例如,在比較 apple > banana 時,結果是 false。這是因為
如果第一個字元相同,指令碼會比較第二個字元。如果不相同,則停止比較。如果第二個字元相同,指令碼將繼續比較字元,直到找到一對不同的字元。例如,在比較 grapes > grapey 時,指令碼會比較每個字元,直到最後。結果是假,因為
在大於等於或小於等於的比較中,套用相同的規則。如果指令碼發現運算子左邊的字串與右邊的字串相同,則運算式的值為 True。
字串比較區分大小寫。
字串中的轉義序列
Studio支援字串常數中的轉義序列。轉義序列允許您在字串中包含某些特殊字元。雙引號或左大括號等字元被識別為代碼。當字串中包含這些字元時,編譯器會以非字面代碼的含義而不是字面值來解釋它們。使用 Escape 序列可以在字串中包含這些字元。如果在字串中包含這些字元而不使用轉義序列,輸出結果將與您預期的不同,並可能導致錯誤。
您不需要將轉義序列新增至包含轉換 XML 或 JSON 的字串。自動為需要轉義序列的字元新增轉義序列。
在使用轉義序列的字串前加上美元符號($):$"...".在雙引號內,您可以使用以下任何一個轉義序列:
序列 | 詳細資料 |
---|---|
|
嵌入雙引號。 |
|
嵌入單引號。 |
|
嵌入 Tab (ASCII 9)。 |
|
嵌入歸位字元 (ASCII 13)。 |
|
嵌入換行符號 (ASCII 10)。 |
|
嵌入退格鍵 (ASCII 8)。 |
|
嵌入一個左大括號。如果在結尾大括號之前的文字中沒有轉義的左大括號,則只需轉義結尾大括號。如果需要轉義結尾大括號,則如下所示: |
|
嵌入空值(0 是零)。 |
下面的範例使用\n轉義序列為字串結果換行符號。這將游標向下移動到下一行,而不會返回到該行的開頭。
x = $"A phrase\nAnd a new line"
列印該字串時,輸出結果如下:
A phrase
And a new line ]
在上例中,結尾的方括號代表游標。
下面的範例使用\"轉義序列在字串中加入雙引號:
y = $"Embedding \"double quotes\" in a string."
字串列印出來後如下所示:Embedding "double quotes" in a string.如果沒有轉義序列,指令碼只能識別到 double 字前的雙引號為止的字串。
下面的範例使用\{ 轉義序列在字串中加入字面大括號:
z = $"Using \{curly} braces."
字串列印出來後如下所示:Using {curly} braces.如果沒有轉義序列,指令碼會將
布爾值運算式
Studio 支援使用布爾值 具有兩種可能值的子了類型:true 和 false。運算式。它們可用於在指令碼中建立決策邏輯。由於布爾值運算式的評估結果要麼為 True 要麼為 False,因此您可以使用它們來建立必須滿足的條件,以決定採取哪種路徑。如果條件滿足,指令碼就會選擇該分支,但如果條件不滿足,指令碼就會選擇另一條分支。
在布爾值運算式中,可以使用很多 運算子。這可以讓您定義符合指令碼需要的邏輯條件語句。例如,您可以使用等號 (=) 檢查一個值是否與另一個值相同,或者使用大於運算子 (>) 檢查一個值是否大於另一個值。
您可以在 If 和 Snippet 等動作中使用布爾值運算式(CXone Studio中的説明頁面:If和Snippet)。可以在 snippet 中使用的許多語句,使用布爾值運算式作為決策機制,包括:
- IF
- IF ... ELSE
- SELECT
下面的範例展示了在 snippet 中使用布爾值運算式和
ASSIGN var1 = "Cat"
IF var1 = "Dog"
{
ASSIGN dogWasFound = true
}
ELSE
{
ASSIGN dogWasFound = false
}
布爾值運算式還可以在指令碼中與動作一起使用。下圖顯示了使用 Studio 動作的相同
啟用或禁用設定的布爾值
指令碼中有時會使用布爾值來啟用或禁用 CXone 中的設定。在這種情況下,您需要為變數指派一個布爾值。要啟用設定,請賦值真或 1。要禁用設定,請賦值假或 0。
單詞和數字都是有效的布爾值。但是,請查看您正在使用的 Studio 動作的線上說明,看看該動作的屬性是否有首選值。無論哪種情況,使用的值都不能用引號括起來。如果用引號括住數值,指令碼會將其視為文字字串,而不是布爾值。
運算子
運算子是表示數學運算或比較的符號。+、- 和 = 等符號都是運算子。布爾值運算子會比較兩個運算式並得出真/假回應。Snippet 同時支援數學運算子和布爾值運算子。
除了用於乘法、除法、加法和減法的常規數學運算子外,您還可以使用這些運算子:
- 模運算子 (%)
- 冪/指數 (^)
- 整除 (\)
- 異或 (~)
常規數學運算順序適用於所有運算式。括號中的任何內容作為子單元首先進行運算。指數/冪運算子第二個被運算。先運算乘法和除法,再運算加法和減法。在完成所有數學運算後,比較運算子最後被運算。
布爾運算子
您可以在 Snippet 中使用以下布爾運算子。所有這些運算子都可以用於
運算子符號 | 運算子名稱 | 詳細資料 |
---|---|---|
= | 相等 | 如果運算式的兩邊相等,則運算式的結果為 |
!= | 不相等 | 如果運算式的兩邊不相等,則運算式的值為 |
> | 大於 |
如果運算式的右邊小於左邊,則運算式的結果為 |
>= | 大於或等於 |
如果運算式的右邊小於或等於左邊,則運算式的結果為 |
< | 小於 |
如果運算式的左邊小於右邊,則運算式的結果為 |
<= | 小於或等於 |
如果運算式的左邊小於或等於右邊,則運算式的結果為 |
& | 和 | 如果全部子運算式的值都為 true,則整個運算式的結果為 |
| | 或 | 如果任一個子運算式的值為 True,則運算式的結果為 |
運算式中的等號
等號運算子 ( = ) 的含義各不相同,這取決於您使用的運算式類型。
賦值語句中使用的運算式將一個運算式賦值給一個變數。這些語句中使用的等號表示將運算式右側的值賦值給左側的變數。
在其他運算式中,等號表示運算相等。例如,在代數運算式 x = 3 * (5 + 10) 中,等號表示 x 代表代數運算式 3 * (5 + 10) 得出的值。在這種情況下,x = 45。您可以在賦值語句中使用這個代數運算式,將運算式的值賦給變數 x。但是,如果將同樣的運算式用作布爾值運算式,它的值要麼為 True,要麼為 False,而這具體取決於 x 的值。
布爾值運算式常用於 Studio 指令碼。如果在這些運算式中使用等號作為運算子,則它會將等號左邊的值與右邊的值進行比較,以確定是否相等。如果需要變更布爾值運算式中使用的變數值,請使用 ASSIGN 動作或 Snippet 動作中的 ASSIGN 語句。