Ocaml中查询输入值类型的方法是什么?
OCaml交互环境中查询表达式所属类型的方法
和Python的动态类型查询逻辑不同,OCaml是静态强类型语言,没有运行时动态执行的type()类函数,它的所有类型信息都是在交互求值阶段通过静态推导确定的,具体在交互环境中查询类型的操作有两种:
- 直接输入目标表达式触发求值:交互环境输出求值结果的同时,会自动附带打印该表达式的静态类型。比如输入
3后按回车,环境会返回- : int = 3,直接标明该值的类型为int;输入"hello"后按回车,会返回- : string = "hello",和Python中查类型的实际输出效果完全对应。 - 不触发求值、仅单独查看类型:可以使用交互环境内置的
#typeof指令,后面跟上待检查的表达式即可,过程中不会实际运行代码、产生求值副作用。例如:- 输入
#typeof 3,会直接返回- : int - 输入
#typeof "hello",会直接返回- : string
- 输入
补充注意点:
#typeof是OCaml原生REPL自带的内置指令,社区广泛使用的增强版交互环境utop也完全兼容该指令,不需要额外安装任何依赖。- 由于OCaml的静态类型特性,查询得到的类型是表达式在编译/交互阶段就确定的静态类型,不存在Python中同一个变量在运行时持有不同类型、用
type()动态查询的场景。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

