【发布时间】:2021-04-11 11:29:44
【问题描述】:
我通过如下查询参数获取输入:127.0.0.1:8000/pair?A=[{A1,B1},{A2,B2},…,{An,Bn}]。我需要访问该元组列表并对其进行更改,以便结果是两个元组的列表,第一个包含原始列表中每个元组的第一个元素,第二个元组包含每个元组的第二个元素, (像这样[{A1,A2,…,An},{B1,B2,…,Bn}])例如:
Input: [{a,5},{2,x},{r,r}]
Output: [{a,2,r},{5,x,r}]
问题是,如果我这样做:
conn = fetch_query_params(conn)
%{ "A" => input } = conn.query_params
然后输入变量是位串,所以我尝试使用
input_parsed = :binary.bin_to_list input,但是如果我想像这样迭代它:
output = Enum.map(input_parsed, fn {x, y} -> {x+y} end)
我收到以下错误:
(FunctionClauseError) no function clause matching in anonymous fn/1 in PwZadanie1.Router.do_match/4
(pw_zadanie_1 0.1.0) lib/pw_zadanie1/router.ex:30: anonymous fn(91) in PwZadanie1.Router.do_match/4
(elixir 1.11.3) lib/enum.ex:1411: Enum."-map/2-lists^map/1-0-"/2
91 在 ASCII 中是 [,所以它仍然没有被解析。
我是 Elixir 的新手,如果能提供任何帮助,我将不胜感激。谢谢。
【问题讨论】:
-
请在此处发布
input。 -
我更新了帖子。
-
您能发一个
input位串吗?以及期望的结果。 -
位串输入是
"[{1,a},{2,3}]"(来自conn.query_params),期望的结果是以下元组列表:[{1,2}, {a,3}] -
这听起来至少部分是 HTML 编码的问题...如果您可以控制输入,为什么不将 URL 中的输入作为 JSON 编码的字符串传递?