0

プロローグ プログラム シェルの連続したプロンプトでいくつかの値を読み取るために述語を使用しています。ユーザーが入力を求められたときにヘルプ メッセージを表示できるようにしたいと考えています。シナリオは次のようになります。

  1. 入力を求める
  2. の場合input = 'help'、ヘルプ メッセージを表示し、再度同じ入力を求める
  3. の場合input /= 'help'は、割り当てValueて正常に終了します

私がこれまでに行ったこと:

ask_input( Question, Value ) :-
    write( Question ), % Please enter  ... :
    read( ReadValue ),
    ( ReadValue = 'help' ->
        write( 'Help message...' ),
        ask_input( Question, Value )
    ;   Value = ReadValue
    ).

明らかに、上記のコードは機能しません。状態で失敗しask_inputます。

4

1 に答える 1

0

私はこれをしました、そしてそれはうまくいくようです:

ask_question( Question, Value ) :-
    write( Question ), nl,
    read( ReadValue ),
    ask_question2( Question, ReadValue, NewValue ),
    Value = NewValue.

ask_question2( Question, ReadValue, NewValue ) :-
    ReadValue = 'help',
    write( 'Help message ...' ), nl,
    ask_question( Question, NewValue ).

ask_question2( _, Value, Value ).
于 2012-10-16T03:42:59.737 に答える