2013-11-15 95 views
0

我想實現一個工作原理如下斷言:Prolog的if語句

pred :- 
    % do this always 

    % if-statement 
     %do this only, when if-statement is true 

    % do this also always, independent if if-statement where true or false. 

我需要這個功能的方案,該方案具有可選性的GUI(XPCE)與否。你可以用

start(true) % with gui 

start(false) % without gui 

因爲我不想寫兩個不同的謂詞邏輯相同,但一次使用GUI,另一次調用它沒有,我想有一個謂詞,只有在啓動(true)被調用時纔會調用gui-code。

感謝您的幫助!

回答

2

標準的序言 「if語句」 是:

(If -> Then; Else) 

其中IfThenElse是目標。您可以使用,如果很容易在你的謂詞的定義謂詞start/1的參數進行切換:

pred :- 
    % common code 
    ( start(true) -> 
     % gui-only code 
    ; % non-gui code 
    ), 
    % common code 

當沒有Else目標,你可以用進球true更換。當目標If失敗時,目標(If -> Then)失敗。即(If -> Then)的目標相當於(If -> Then; fail),而不是(If -> Then; true)

+0

Thx爲您提供幫助!是的,我知道這個語法。但是,如果我沒有「非傢伙代碼」,我可以做什麼,如(如果 - >然後)。 – mrbela

+0

pred: - ...(start(true) - > ...; true),... – CapelliC

+0

啊!完美..非常感謝你,老兄! – mrbela