我有一个空列表,在特殊情况下,想要在该列表后面添加一个元组。我怎样才能做到这一点?

我尝试了几种方法:

case ReqFilePath of
    "style.css" ->
        ResponseHeaders = [{"Content-Type", "text/css"}];
    _Else ->
        ResponseHeaders = []
end,


case filelib:is_file(File) of
    true ->
        {ok, Content} = file:read_file(File),
        {output, Content, ResponseHeaders}; % Complains ResponseHeaders is not safe
    false ->
        not_found
end.

这也不起作用,因为已经设置了变量。当我首先初始化ResponseHeaders = [],然后尝试向其添加值时
ResponseHeaders = lists:append(ResponseHeaders, [{"Content-Type", "text/css"}]);

我遇到比赛错误。在Erlang中,您通常如何做到这一点?

最佳答案

在erlang中执行此操作的通常方法是使用另一个变量:

ResponseHeaders = [{"Content-Type", "text/css"}],
[...]
ResponseHeaders2 = ResponseHeaders ++ [{new_thing}]

或者,您可以创建一个为您构建ResponseHeaders的函数:
ResponseHeaders = build_headers(ReqFilePath).

build_headers("skin.css") -> [{"Content-Type", "text/css"}];
build_headers(_) -> [].

别忘了将您的思维方式改变为错误的方式! ;)

09-25 17:20