3

我对序言很陌生,但被卡住了。我需要在计算过程中存储一个带有一些字符串的变量,我决定通过在我正在使用的类中添加一个“单一事实”来做到这一点。一切正常,正在存储字符串,但是当我稍后尝试添加代码以访问它时,编译器返回一个错误,"The expression has type 'dataBL::dataBL@objectDB', which is incompatible with the type '::symbol'".
我认为这不是存储变量的有效方式,所以,谁能帮我解决这个问题?我尝试在网上搜索答案,但一无所获。

我试图访问这样的事实:

    getString(U) :-
    U = stringStorage(_).
4

1 回答 1

1

如果我猜对了,您需要将value与某个变量 ID ( key) 关联的 a 存储为事实。您的任务的(抽象)解决方案可以将您的值存储为事实:

bind( Key, Value ).

实施示例(SWI Prolog)

存储

recordz('var1', "String value1"),

recordz('var2', "String value2")

查询var2的值

current_key(-Key), 

Key = 'var2'

recorded(Key, Value)
于 2017-12-17T07:58:49.500 回答