Пролог - проверка ввода пользователя - PullRequest
2 голосов
/ 17 сентября 2011

Привет, ребята,

Мне было интересно, есть ли простой способ проверить, что пользователь набрал в SWI-Prolog. Я делаю следующее:

:- read(Term),
   Term = 'A' -> doSomeStuff, !;
   (Term = 'B' -> doOtherStuff, !;
   (Term = 'C' -> doSomething)).

Моя цель - выполнить определенное действие, когда пользователь вводит символ A, другое - при вводе B и т. Д. Но мой код, похоже, не работает. кто-нибудь может сказать мне, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2011

Вы должны иметь заголовок в своем предложении, например,

do :- read(Term),
    (Term = 'A' -> doA, !;
    (Term = 'B' -> doB, !;
    (Term = 'C' -> doC))).

doA :- writeln('DoA').
doB :- writeln('DoB').
doC :- writeln('DoC').

Затем, позвоните ?- do. и введите 'A'. <enter>.

Проще использовать простые константы:

do2 :- read(Term),
    (Term = a -> doA, !;
    (Term = b -> doB, !;
    (Term = c -> doC))).

Затем вызовите ?- do2. и введите a. <enter>.

0 голосов
/ 17 сентября 2011

Работает, если вы наберете 'A'.<Enter> в командной строке.

...