如何检查变量是prolog中的字符串还是数字?

时间:2011-10-18 14:19:44

标签: prolog

我正在编写一个程序,用于添加用户提供的列表编号,但是,如果有字符串,则会给我一个错误。如何检查列表中的元素是字符串还是数字? 感谢名单

3 个答案:

答案 0 :(得分:1)

number/1会告诉您对象是否为数字。 atom/1会告诉你对象是否是一个原子,我认为这是一个字符串的意思。如果你的意思是真正的字符串(字符代码列表),那么

string(Object) :-
    forall(member(X, Object), number(X))

会做到这一点。

所有这些都会在存在变量的情况下失败。

答案 1 :(得分:0)

如果您的列表包含要作为数字读取的字符串:

...maplist(convert_element, List, OnlyNumbers),

convert_element(Num, Num) :- number(Num).
convert_element(String, Num) :- number_codes(Num, String).
convert_element(Unknown, 0) :- throw(unknown(Unknown)).

throw可以替换为消息......

答案 2 :(得分:0)

number(10.0). % true
string("hello"). % true

我不知道为什么其他答案这么复杂...