【发布时间】:2015-12-11 01:47:07
【问题描述】:
我对 Prolog 很陌生,偶然发现了一些我不明白的东西。
这是我的代码:
:- dynamic user/3.
user('id', 'Name', 20).
changeAge(Id, NewAge) :-
user(Id, Name, _),
retract(user(Id,_,_)),
assert(user(Id,Name,NewAge)).
要更新数据库中的用户信息,
changeAge/2 执行这三个步骤:
- 查找正确的记录,使用
user/3。 - 使用
retract/1从数据库中删除一条匹配记录。 - 使用
assert/1将新的更新记录插入数据库。
这是我的控制台输出:
1 ?- user('id', _, Age).
Age = 20.
2 ?- changeAge('id', 25).
true.
3 ?- user('id', _, Age).
Age = 25.
4 ?- changeAge("id", 30).
false.
5 ?- user('id', _, Age).
Age = 25.
为什么单引号给我true(第2行)
当双引号给我false(第4行)?
【问题讨论】:
标签: prolog portability double-quotes prolog-assert