我正在编写一个程序,用于添加用户提供的列表编号,但是,如果有字符串,则会给我一个错误。如何检查列表中的元素是字符串还是数字? 感谢名单
答案 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
我不知道为什么其他答案这么复杂...