4

Visual Prolog 8 抛出错误 c504:表达式具有类型 '() -> ::char 过程',它与类型 '::char' 不兼容。

主程序

implement main
    open core, console

class predicates
    цикл : ().
    print : ().

clauses
    цикл().

    print() :-
        console::initUtf8(),
        цикл,
        C = readChar,
        /* Читать символ и связывать его с переменной  C */
        write(C),
        C1 = convert(char, C),
        C2 = convert(char, '\r').
        C1 = C2.
        /* Является ли введенный символ возвратом каретки? fail, если нет */

    run() :-
        цикл,
        fail.

    run() :-
        succeed.
        % place your own code here

end implement main

goal
    mainExe::run(main::run).

如何解决?

4

1 回答 1

3

您似乎在这里有错误:

    print() :-
        ....
        цикл,
        C = readChar,       % <<-------

你应该这样写

        C = readChar(),

正如 在手册中搜索readChar所揭示的那样,人们可以在其中看到建议的用法

_ = 控制台::readChar()。

似乎错误消息表明相同:readChar “是类型的过程() -> char。” ,而不是“一个char。你C的是一个char. 为了从一个过程中得到结果,我们通常需要运行它(这个“运行”与run你的代码无关)。

于 2017-11-05T13:15:26.267 回答