假设我有以下代码,它It works!
使用 predicate 打印一个术语是否是一个字符串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)
now 替换查询确实可以正常工作,这意味着字符串作为原子而不是 SWI-Prolog 7 字符串传递,即使我给 JPL 库解析的文本使用了作为字符串的双引号定界符,而不是原子定界符。
更奇怪的是,Java 调试器告诉我 Termstring
有 name test
(不带引号)和 type string
!所以textToTerm
似乎产生了一个正确的字符串,但是 Term 本身还是作为原子传递的!
这是一个错误,还是默认行为?
编辑: JPL 7 文档指出
SWI Prolog V7 字符串在 JPL7 中表示为类型为“字符串”的原子
那么就没有办法将真正的字符串传递给查询吗?