记录中元组字段的规范

War*_*ker 3 erlang

请参阅下面我对记录定义的尝试.Erlang编译器不将key字段定义视为有效语法.

有没有办法完成类似的事情,没有创建关键记录或只是一个未定义的元组结构key :: tuple()

-record(spot, { 
      key :: {id :: integer(), version:: integer(), live :: boolean()},
      name :: binary(), 
      short_description :: binary(), 
      address1 :: binary(), 
      address2 :: binary(),
      address3 :: binary(),
      postalcode :: binary(),
      city :: binary(),
      phone :: binary(),
      website_url :: binary(),
      menu_url :: binary(),
      last_modified_at :: erlang:timestamp()}).
Run Code Online (Sandbox Code Playgroud)

Hyn*_*dil 5

{id :: integer(), version:: integer(), live :: boolean()}是无效的类型规范.您可以使用记录定义,也可以只指定类型信息{integer(), integer(), boolean()}.

所以使用记录看起来像.

-record(spot_key, {
         id :: integer(),
         version:: integer(),
         live :: boolean()
     }).

-record(spot, { 
      key :: #spot_key{},
      name :: binary(), 
      short_description :: binary(), 
      address1 :: binary(), 
      address2 :: binary(),
      address3 :: binary(),
      postalcode :: binary(),
      city :: binary(),
      phone :: binary(),
      website_url :: binary(),
      menu_url :: binary(),
      last_modified_at :: erlang:timestamp()
    }).
Run Code Online (Sandbox Code Playgroud)