我一直在教自己OCaml
并且一直试图查看Pervasives
模块和其他模块,找到一个包含类似C / C ++函数的函数的模块isdigit
和isalpha
尝试清理我的代码。
正如我检查一封信的条件陈述之一所示:
if token > 64 && token < 91 || token > 96 && token < 123 then (* Do something * )
OCaml
是否有一个等同于isdigit
和isalpha
的模块?
答案 0 :(得分:11)
一种解决方案是在字符范围内使用模式匹配:
let is_alpha = function 'a' .. 'z' | 'A' .. 'Z' -> true | _ -> false
let is_digit = function '0' .. '9' -> true | _ -> false
答案 1 :(得分:1)
使用@octachron使用模式匹配的解决方案我能够创建自己的isalpha
和isdigit
函数来清理我的代码。
解决方案代码:
(* A function that will validate if the input is a ALPHA *)
let is_alpha alpha =
match alpha with
'a' .. 'z' -> true
| 'A' .. 'Z' -> true
| _ -> false;;
(* A function that will validate if the input is a DIGIT *)
let is_digit digit =
match digit with
'0' .. '9' -> true
| _ -> false;;
let get_token token =
if (is_alpha (char_of_int token)) = true
then (* Checking if a APLHA was found *)
begin
Printf.printf("Valid Token Alpha found: %c\n") (char_of_int token);
end
else (is_digit (char_of_int token)) = true
then (* Checking if a Digit was found*)
begin
Printf.printf("Valid Token Digit found: %c\n") (char_of_int token);
end
else
begin
Printf.printf("Invalid Token found: %c\n") (char_of_int token);
end
;;
感谢您帮助我找到解决方案@octachron。