Erlang 记录中元组字段的规范

Erlang 记录中元组字段的规范,erlang,Erlang,请参阅下面我尝试的记录定义。Erlang编译器不考虑键< /COD>字段定义作为有效语法。 有没有一种方法可以实现类似的功能,而不必将键设为记录,也不必像key::tuple()这样定义不清的元组结构 如果不想为键创建记录,则不能在键元组中使用字段名。 若你们删除那个字段名,我相信编译器将能够吃掉它 我的意思是尝试而不是 -record(spot, { key :: {id :: integer(), version:: integer(), live :: boolean(

请参阅下面我尝试的记录定义。Erlang编译器不考虑<代码>键< /COD>字段定义作为有效语法。 有没有一种方法可以实现类似的功能,而不必将键设为记录,也不必像
key::tuple()
这样定义不清的元组结构


如果不想为键创建记录,则不能在键元组中使用字段名。 若你们删除那个字段名,我相信编译器将能够吃掉它

我的意思是尝试而不是

   -record(spot, { 
      key :: {id :: integer(), version:: integer(), live :: boolean()},
      name :: binary(), 

   -record(spot, { 
      key :: {integer(), integer(), boolean()},
      name :: binary(), 
{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()
    }).
-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()
    }).