Thrift中的Erlang原子和元组

时间:2010-02-09 17:19:08

标签: erlang thrift

对应的Thrift类型是:

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

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

1 个答案:

答案 0 :(得分:3)

好吧,我会尽力回答:)

显然在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)
  }.

如果我错了,请纠正我。