2010-02-09 34 views
4

哪一个是对应的节俭类型:二郎原子和元组在节俭

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

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

回答

3

好吧,我会尽量回答自己:)

显然存在节俭二郎元组没有直接的翻译。你可以做的是在你的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) 
    }. 

请纠正我,如果我错了。