【问题标题】:Erlang atoms and tuples in ThriftThrift 中的 Erlang 原子和元组
【发布时间】:2011-01-14 22:02:03
【问题描述】:

对应的 Thrift 类型是:

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

是否有任何关于 Erlang 类型和 Thrift IDL 类型之间直接映射的文档?

【问题讨论】:

    标签: erlang thrift


    【解决方案1】:

    好吧,我会试着回答自己:)

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

    Erlang 原子必须被翻译成 Thrift 二进制文件(或最终是字符串)。

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

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

    您需要在 whatever.thrift 文件中指定:

    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)
      }.
    

    如果我错了,请纠正我。

    【讨论】:

      猜你喜欢
      • 2012-06-09
      • 2017-03-01
      • 2012-05-17
      • 1970-01-01
      • 2011-08-16
      • 2012-02-17
      • 2015-01-30
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多