【发布时间】:2011-01-14 22:02:03
【问题描述】:
对应的 Thrift 类型是:
- 一个 Erlang 元组(我可以想象它是一个结构)
- 一个 Erlang 原子(如果有的话?)
是否有任何关于 Erlang 类型和 Thrift IDL 类型之间直接映射的文档?
【问题讨论】:
对应的 Thrift 类型是:
是否有任何关于 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)
}.
如果我错了,请纠正我。
【讨论】: