4

以下是对应的 Thrift 类型:

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

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

4

1 回答 1

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

如果我错了,请纠正我。

于 2010-02-11T13:56:59.260 回答