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 回答