關於 iLogic 中的條件陳述式

iLogic 提供條件陳述式,可供您在「編輯規則」對話方塊中使用。

您可以將陳述式放置在您為模型定義的規則 (Visual Basic 小程式) 中。條件陳述式 (例如 If-Then-Else) 允許規則根據特定準則執行動作。

iLogic 中的 If-Then-Else 陳述式

If-Then-Else 陳述式中,如果條件為 true,則執行一個動作集,如果條件為 false,則執行另一個動作集。

true、false陳述式執行後,程式控制將繼續執行下一個陳述式。

在 iLogic 中,您可以使用區塊或多行形式實施 If-Then-Else 結構。

例如:

If size = “small” Then
length = 6.0
Else
length = 12
End If

如果條件表示式為 true,將執行 ThenElse 關鍵字之間的陳述式,而略過 ElseEnd If 關鍵字之間的陳述式。如果條件表示式為 false,則將執行 ElseEnd If 關鍵字之間的陳述式,而略過 ThenElse 關鍵字之間的陳述式。在任何情況下,程式控制都會繼續執行 End If 陳述式之後的陳述式。

iLogic 中的 If-Then 陳述式

If-Then-Else 陳述式中,不論條件為 true 還是為 false,均會執行動作。但是,在某些情況下,只有當條件為 true 時才執行一個動作或動作集,而當條件為 false 時,則不執行任何動作。

您可以忽略區塊 If 結構的 Else 部分。例如:

If size = “small” Then
length = 6.0
End If

iLogic 中的空動作集

在區塊形式的 If 陳述式中,您也可以使用動作集。例如,您可以指定「如果條件為 true,不執行任何動作,否則執行某些動作」,如以下區塊所示:

If length  > 20 Then
Else MessageBox.Show(" Invalid Size.Length must be at least 20 in. ", "Title")
End If

使用空動作集時,可以在 true 陳述式通常會執行的位置添加註釋,以改善可讀性:

If length  > 20 Then ’do nothing
Else MessageBox.Show(" Invalid Size.Length must be at least 20 in ", "Title")
End If

IF 陳述式做為單行陳述式使用

雖然區塊形式的 If 陳述式可以增強可讀性,但是您也可以將 If 陳述式寫為單行形式。在這種格式中,不使用 End If 陳述式。

例如:

If length < 20 Then MessageBox.Show("Length is Too Short", "Title")
If mass < 1000 Then length =20 Else length =40

在條件表示式中使用布林變數

布林變數 (其值可以為 TrueFalse) 可以在任何可以使用關係表示式的地方使用。

例如,以下兩個陳述式是等同的:

If Feature.IsActive("Fillet1") = true Then . . .
If Feature.IsActive("Fillet1") Then . . .

在第二個陳述式中,True 值是暗含的。

同樣,以下兩個陳述式均可用來測試布林變數是否為 false:

If Feature.IsActive("Fillet1") = false Then . . .
If Not Feature.IsActive("Fillet1") Then . . .

這些範例展示函數的結果。其他範例包括使用參數名稱做為布林變數,或使用本端變數包含布林值。

iLogic 中的條件陳述式 Case 結構

Case 結構讓您可以在兩個以上的替用項目之間進行選擇。

可以使用延伸區塊 If 結構或 Select Case 陳述式結構實施 Case 結構。

iLogic 中的延伸區塊 If 陳述式 (If-Then-ElseIf)

延伸區塊 If 陳述式使用一個或多個嵌套在第一個 If 子句和最後一個 Else 子句之間的 ElseIf 子句。關鍵字 ElseIf 是一個詞。

例如:

If material = "Steel" Then
density = 0.284
ElseIf material = "Copper" Then
density = 0.323
ElseIf material = "Aluminum" Then
density = 0.098
End If

在這種格式中,程式執行與發現的第一個為 true 的條件表示式相關聯的陳述式。然後,程式跳轉到 End If 陳述式之後的陳述式執行。當遇到與之前的 IfElseIf 條件不相符的非預期條件時,執行最後一個 Else 陳述式,以免發生錯誤。

使用 ElseIf 便無需在巢狀 If 結構中編碼多個 End If 陳述式。做為比較,上一個範例也可以編寫為:

If material = "Steel" Then
density = 0.284
Else
If material = "Copper" Then
density = 0.323
Else
If material = "Aluminum" Then
density = 0.098
End If
End If
End If

iLogic 中的 Select Case 陳述式

Select Case 是具有多個選項的強大陳述式。

例如:

Select Case material
Case “Steel”
density =0.284
Case “ Copper”
density = 0.323
Case “Aluminum”
density = 0.098
Case Else
density = 0
MessageBox.Show("not a valid material" , "Warning")
End Select

在這種格式中,Select Case 陳述式指定要測試的表示式。每個後續 Case 子句指定一個或多個要與測試表示式進行比較的表示式。將執行第一個包含與測試表示式相符之表示式的 Case 子句的關聯動作。然後,程式控制將跳轉到 End Select 陳述式之後的陳述式執行。當測試表示式的非預期值與之前的任何一個 Case 子句中的表示式清單不相符時,執行最後一個 Case Else 子句,以免發生錯誤。

Select Case 之後的測試表示式可以是更複雜的表示式,例如:

Select Case radius +1
Select Case  MinOfMany(x,y,z)

Case 子句中的表示式清單可以遵循以下任意一種格式:

格式 範例
<表示式>[,表示式,...] Case 1, 10, 100

Case "Y", "y"

<表示式> To <表示式> Case 1 To 9

Case "A" To "C"

Is<關係運算子表示式> Case Is >= 21
(上述各項的任意組合) Case Is <= 5, 20 To 29, 43

例如:

Select Case width
Case 1,2,3,4,5
MessageBox.Show("Small Plate", "Size")
Case 6 to 15
MessageBox.Show("Medium Plate", "Size") 
Case Is > 15
MessageBox.Show("Large Plate", "Size")
End Select

Select Case 陳述式不需要與某個特定變數或表示式關聯。可以使用該陳述式演算任意數目的條件,需使用以下格式:

Select Case True
Case length >= 10
width = length -1
thickness = length/5
Case length < 10
width = length - .75
thickness = length/6
End Select