以下是对应的 Thrift 类型:
- 一个 Erlang 元组(我可以想象它是一个结构)
- 一个 Erlang 原子(如果有的话?)
是否有任何文档可用于 Erlang 类型和 Thrift IDL 类型之间的直接映射?
好吧,我会尝试回答自己:)
显然 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)
}.
如果我错了,请纠正我。