0
A
回答
2
简答:你不行。
Erlang是一种动态类型语言,运行时依赖的许多假设都要求它是这种方式,至少在某些地方。过去一直在讨论制作强类型子集或功能纯语言子集,但这两种方法都没有表现出值得超出透析器已经提供的功能。
这就是说,透析器是一个非常有用的工具如果你构建你的代码来利用它。
1
@ zxq9是对的。你不能。不过,我想补充说的是,除了透析器之外,您还可以将警卫添加到您的功能定义中。透析器非常适合静态分析,但不会在运行时提供帮助。除了定义的功能和型号规格,像这样:
-spec foo(X :: integer()) -> integer().
foo(X) -> X + 1.
您也可以在函数定义中添加一个保护条件:
-spec foo(X :: integer()) -> integer().
foo(X) when is_integer(X) -> X + 1.
这将确保一个例外是,如果一个意外上调类型被传递给函数调用。通过使用类型规范和守卫,你可以确保函数只会在指定的类型上被调用。
相关问题
- 1. erlang类型检测
- 2. Erlang mime类型
- 3. 类(类型)检查
- 4. 检查类型
- 5. XSLT类型检查
- 6. Prolog类型检查
- 7. Typetree类型检查
- 8. 检查Genric类型
- 9. 检查类型Javascript
- 10. typedef类型检查?
- 11. 检查泛型类型是
- 12. 检查泛型类型
- 13. Erlang显示器类型
- 14. 类型检查的子类
- 15. 类型检查和范围检查
- 16. 类型检查与泛型类
- 17. 创建新类型或检查类型?
- 18. OCaml:类型检查对象
- 19. 变量类型检查
- 20. Java 8类型检查Collectors.groupingBy
- 21. 模板类型检查C++
- 22. 类型平等检查
- 23. 检查通用类型
- 24. 检查sqlite列的类型
- 25. 结构检查类型| Swift
- 26. DynamicMethod的和类型检查
- 27. Elm - 检查值的类型
- 28. 检查设备类型?
- 29. Ramda类型检查助手
- 30. 检查facebook对象类型
您可以编写一个运行编译器和透析器的makefile或类似文件。或者我误解了你的问题? – legoscia 2015-02-23 11:22:01