Prolog 如何检查术语是否存在?
如何检查管理员是否存在?否则:Prolog 如何检查术语是否存在?,prolog,Prolog,如何检查管理员是否存在?否则: user(admin). user(guest). 通常,可以动态添加到数据库中的user/1等谓词声明如下: assert(user(admin)). 您可以查询用户管理员是否存在: :- dynamic(user/1). 现在,如果添加用户admin,则相同的查询将成功: ?- user(admin). false. 在没有动态声明的情况下,可以自动生成一个谓词: ?- assert(user(admin)). true. ?- user(admin)
user(admin).
user(guest).
通常,可以动态添加到数据库中的
user/1
等谓词声明如下:
assert(user(admin)).
您可以查询用户管理员是否存在:
:- dynamic(user/1).
现在,如果添加用户admin,则相同的查询将成功:
?- user(admin).
false.
在没有动态声明的情况下,可以自动生成一个谓词:
?- assert(user(admin)).
true.
?- user(admin).
true.
通常,可以动态添加到数据库中的
user/1
等谓词声明如下:
assert(user(admin)).
您可以查询用户管理员是否存在:
:- dynamic(user/1).
现在,如果添加用户admin,则相同的查询将成功:
?- user(admin).
false.
在没有动态声明的情况下,可以自动生成一个谓词:
?- assert(user(admin)).
true.
?- user(admin).
true.
这不是我感兴趣的。如何检查
user(admin)
是否已添加到数据库?@user33060601如果?-user(admin)
返回true
,则您知道它已添加到数据库中。如果它返回false
您知道它没有被添加到数据库中。我用使用current\u predicate/2
的不太“黑客”的方法取代了异常捕获的粗糙用法。(感谢有人对这篇文章的评论,现在似乎已经不见了?)这不是我感兴趣的。如何检查user(admin)
是否已添加到数据库?@user33060601如果?-user(admin)
返回true
,则您知道它已添加到数据库中。如果它返回false
您知道它没有被添加到数据库中。我用使用current\u predicate/2
的不太“黑客”的方法取代了异常捕获的粗糙用法。(多亏有人对这篇文章的评论,现在似乎已经不见了?)