作为练习SML考试的一部分,我被要求编写一个函数,用于检查字符“c”是否为数字。
我正在调查Char.ord
函数,但是它返回ASCII代码,而不是字符中的整数本身,我似乎无法检查类型。
我环顾四周说要使用datatype wrapper
,但是当把它实现到一个函数中时;我没有得到理想的结果。
谢谢:)
答案 0 :(得分:2)
您可以使用比较运算符:
fun is_digit c = #"0" <= c andalso c <= #"9";
编辑时:我并非100%确定使用datatype wrapper
的含义,但您也可以执行以下操作。使用str
将char转换为字符串,然后使用Int.fromString
尝试转换为int。这将返回int option
。然后,您可以在返回值上使用模式匹配:
fun is_digit c =
case Int.fromString (str c) of
NONE => false
| _ =>true;
答案 1 :(得分:2)
您可以比较您获得的ASCII码。如果它是一个数字,它将在一系列值之间(我认为48-57)。使用表格中的数字代码检查您获得的号码。
这是一个示例函数:
fun check x = (ord x > 47) andalso (ord x < 58);