Types 检查类型OCaml
我想写一个函数,根据输入的类型做不同的事情。或者换句话说:如何编写与此python代码等效的代码:Types 检查类型OCaml,types,ocaml,Types,Ocaml,我想写一个函数,根据输入的类型做不同的事情。或者换句话说:如何编写与此python代码等效的代码: def stringOrInt(a): if type(a) is str: return "it's a string" elif type(a) is int: return "it's a int" else return "it's neither" Ocaml不支持这种类型检查。根据您想要做什么,可能的
def stringOrInt(a):
if type(a) is str:
return "it's a string"
elif type(a) is int:
return "it's a int"
else
return "it's neither"
Ocaml不支持这种类型检查。根据您想要做什么,可能的解决方法是使用变体
type StrOrInt=String of String | Int of Int |两者都不
然后,您的函数将对变量进行模式匹配
let str_or_int a = match a with
| String s -> print_string "this is a string"
| Int i -> print_string "this is an int"
| Neither -> print_string "neither"
答案是你没有。OCaml类型在运行时不可用。您是否考虑了具体的用例?您不能检查类型,如果需要,请使用变体类型
type stringOrInt=String of String | Int of Int
。或GADT类型,用于输入和输出类型需要匹配的更复杂的用例,例如unpack\u stringOrInt应该为string“str”
返回string,为int 42
返回int。您到底想做什么?为什么会有一个静态未知类型?