Thrift/Erlang字符串

ste*_*r25 4 erlang thrift

我正在尝试在Erlang中编写一个简单的Thrift服务器,它接受一个字符串并返回一个字符串.

一切似乎都在努力调用我的功能:

handle_function(Function, Args) when is_atom(Function), is_tuple(Args) ->
case apply(?MODULE, Function, tuple_to_list(Args)) of
    ok -> ok;
    Reply -> {reply, Reply}
end.

test([X]) ->
"You sent: " ++ X.
Run Code Online (Sandbox Code Playgroud)

我得到了一个function_clause.堆栈跟踪显示以下内容:

{function_clause,[{server,test,[<<"w00t">>]},
{server,handle_function,2},...

我的handle_function是从教程文件中复制的,所以如果我需要调整它,我不会感到惊讶.有任何想法吗?

mwt*_*mwt 6

apply的最后一个参数应该是'test'的参数列表,例如,如果tuple_to_list(Args)导致:

[1]
Run Code Online (Sandbox Code Playgroud)

...然后:

test(1)
Run Code Online (Sandbox Code Playgroud)

如果tuple_to_list(Args)导致:

[1,2]
Run Code Online (Sandbox Code Playgroud)

...然后:

test(1,2)
Run Code Online (Sandbox Code Playgroud)

所以,如果{<<"woot">>}正在传递tuple_to_list,那将是:

[<<"woot">>]
Run Code Online (Sandbox Code Playgroud)

...所以:

test(<<"woot">>)
Run Code Online (Sandbox Code Playgroud)

...但是测试的签名要求列表作为参数,因此存在不匹配.