代码之家  ›  专栏  ›  技术社区  ›  Roberto Aloi

二郎节俭的原子和元组

  •  4
  • Roberto Aloi  · 技术社区  · 15 年前

    对应节俭类型:

    • 一个二郎元组(我可以想象它是一个结构)
    • 一个二郎原子(如果有的话?)

    Erlang类型和Thrift IDL类型之间的直接映射是否有可用的文档?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Roberto Aloi    15 年前

    好吧,我会尽力回答自己的:)

    显然,在节俭中没有二郎元组的直接翻译。您可以在Erlang模块中包含由节俭生成的类型定义,并编写Erlang代码,以便将生成的Erlang记录用作参数和/或函数的返回值。

    二郎原子必须转换成节俭的双星(或最终是弦)。

    所以,如果你想拥有这样的东西:

    -spec cool_function() ->
      {atom(), atom()}.
    cool_function() ->
      {foo, bar}
    

    您需要在 任何节俭 文件:

    struct MyTuple {
      1: binary first,
      2: binary second
    }
    
    service myService {
      MyTuple cool_function()
    }
    

    另外,您还需要将Erlang函数编写为:

    [...]
    
    -include("whatever_types.hrl").
    
    [...]
    
    -spec cool_function() ->
      #myTuple{}.
    cool_function() ->
      #myTuple{
        first = atom_to_binary(foo, utf8),
        second = atom_to_binary(bar, utf8)
      }.
    

    如果我错了,请纠正我。