假设我有以下代码,如果术语是使用谓词It works!
的字符串,则打印string/1
:
Term string = org.jpl7.Util.textToTerm("\"test\"");
Query testQuery = new Query("string",string);
if(testQuery.hasMoreSolutions()) {
System.out.println("It works!");
}
这不会打印任何内容,这不是我的预期。
更奇怪的是,用new Query("atom",string)
替换查询现在可以正常工作,这意味着字符串作为原子而不是SWI-Prolog 7字符串传递,即使我将JPL库解析为文本使用双引号,它是字符串分隔符,而不是原子分隔符。
甚至更奇怪的是,Java调试器告诉我,术语string
的名称为test
(不带引号),并且键入string
!所以textToTerm
似乎产生了一个正确的字符串,但Term本身仍作为原子传递!
这是一个错误,还是默认行为?
编辑: JPL 7 docs状态
SWI Prolog V7字符串在JPL7中表示为Atoms,其类型为"字符串"
那么真的没有办法将真正的字符串传递给查询吗?