我对 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
当双引号给我(第4行)时,为什么单引号给我(第2false
行)?