2016-02-23 34 views
3

我正試圖讓用戶有機會對圖像進行過濾。在我的代碼,我會收到一個字符串像如何在進度4GL的CASE中編寫IF語句?

ASSIGN img = "images\green.png". 

我認爲這將是最好寫下面如果在一個CASE語句,但是我不知道怎麼了,因爲你不能使用類似火柴或任何CASE語句中的其他變量值。

IF img MATCHES "*green*" THEN DO: 
    MESSAGE "It's green!" 
     VIEW-AS ALERT-BOX INFO BUTTONS OK. 
END. 
ELSE IF img MATCHES "*orange*" THEN DO: 
    MESSAGE "It's orange!" 
     VIEW-AS ALERT-BOX INFO BUTTONS OK. 
END. 
ELSE IF img MATCHES "*red*" THEN DO: 
    MESSAGE "It's red!" 
     VIEW-AS ALERT-BOX INFO BUTTONS OK. 
END. 

所以我顯然不能寫這樣的:

CASE img: 
    WHEN MATCHES "*green*" THEN DO: 
     MESSAGE "It's green!" 
      VIEW-AS ALERT-BOX INFO BUTTONS OK. 
    END. 
    WHEN MATCHES "*orange*" THEN DO: 
     MESSAGE "It's red!" 
      VIEW-AS ALERT-BOX INFO BUTTONS OK. 
    END 
    WHEN MATCHES "*red*" THEN DO: 
     MESSAGE "It's red!" 
      VIEW-AS ALERT-BOX INFO BUTTONS OK. 
    END. 
END CASE. 

任何想法還是我只是把它在IF語句?

+0

我不清楚你實際上是試圖做。 if-else-if樹很可能與case語句一樣快,但認爲它並不那麼優雅。我明白你的例子很簡單,但爲了更好地思考,我需要明白你要做什麼。你提到了過濾,但我看不到你所顯示的代碼會執行過濾操作。 – Screwtape

+0

此代碼僅是IF語句的一個示例,並未顯示過濾器所需的代碼。但我會堅持使用IF語句,因爲它更易於閱讀。謝謝你的時間! –

回答

2

這裏有一個小竅門,我們用它來把表達式case語句:

CASE TRUE: 
    WHEN img MATCHES "*green*" THEN DO: 
      MESSAGE "It's green!" 
      VIEW-AS ALERT-BOX INFO BUTTONS OK. 
    END. 
    WHEN img MATCHES "*orange*" THEN DO: 
      MESSAGE "It's orange!" 
      VIEW-AS ALERT-BOX INFO BUTTONS OK. 
    END. 
    WHEN img MATCHES "*red*" THEN DO: 
      MESSAGE "It's red!" 
      VIEW-AS ALERT-BOX INFO BUTTONS OK. 
    END. 
    OTHERWISE DO: 
      MESSAGE "It's something else!" 
      VIEW-AS ALERT-BOX INFO BUTTONS OK. 
    END. 
END CASE. 
+2

我會堅持IF語句。語義技巧很難閱讀,並可能在未來破解... – Jensd

+2

@Jensd我想你是對的,閱讀起來會更困難。我將只使用IF語句。 –

+1

@ bupereira儘管感謝您的訣竅! :) –