【发布时间】:2013-03-28 06:38:22
【问题描述】:
我正在尝试写一条代表银行账户的记录:
-record(account, { name :: atom(),
type :: atom(),
balance = 0 :: integer() }).
我还想将余额限制为始终为>= 0。我该怎么做?
【问题讨论】:
-
请注意,虽然您可以将类型声明为非负整数,但这不会在运行时强制执行任何操作,它实际上只是一个注释。您可以将余额字段设置为您选择的任何值和任何类型。
-
@rviding 如何在运行时强制执行此行为(没有函数保护)?或者这种伪静态类型在 Erlang 中不存在?
-
你不能! Erlang 太动态了,所以语言中不存在静态类型,编译器也不使用这些信息。它仅用于文档和类型检查工具dialyzer。
标签: types erlang default-value records restrictions