Erlang 为什么这个列表显示为空,但元组可以很好地解析?
我正在将一个充满erlang对象的元组转换为映射,我计划稍后将其转换为JSON 正在使用2元素元组调用tileJSON函数。我希望在每个tableCache元素的映射中看到一个包含平铺的行列表。相反,我看到的是:Erlang 为什么这个列表显示为空,但元组可以很好地解析?,erlang,Erlang,我正在将一个充满erlang对象的元组转换为映射,我计划稍后将其转换为JSON 正在使用2元素元组调用tileJSON函数。我希望在每个tableCache元素的映射中看到一个包含平铺的行列表。相反,我看到的是: #{"availableTablePids" => ["<0.477.0>"], "hall" => [], "tableCache" => [], "tablePids" => ["<0.477.0>"]} 我得到以下数据
#{"availableTablePids" => ["<0.477.0>"],
"hall" => [],
"tableCache" => [],
"tablePids" => ["<0.477.0>"]}
我得到以下数据:
#{"availableTablePids" => ["<0.477.0>"],
"hall" => [],
"tableCache" => [#{"actions" => #{"current" => "x","o" => #{"next" => 0,"now" => 0},"x" => #{"next" => 0,"now" => 2}},
"board" => [[{"spawn","x"},
{"empty","null"},
{"empty","null"},
{"empty","null"},
{"empty","null"}],
[{"empty","null"},
{"empty","null"},
{"empty","null"},
{"ridge","null"},
{"empty","null"}],
[{"empty","null"},
{"empty","null"},
{"ridge","null"},
{"empty","null"},
{"empty","null"}],
[{"empty","null"},
{"ridge","null"},
{"empty","null"},
{"empty","null"},
{"empty","null"}],
[{"empty","null"},
{"empty","null"},
{"empty","null"},
{"empty","null"},
{"spawn","o"}]],
"clock" => #{"current" => "x","o" => 3000,"status" => "unstarted","x" => 3000}}],
"tablePids" => ["<0.477.0>"]}
atomJSON(Atom) -> atom_to_list(Atom).
tileJSON({Status, Sitter}) ->
[atomJSON(Status), atomJSON(Sitter)].
rowJSON(Row) ->
lists:map(fun(Tile) -> tileJSON(Tile) end, Row).
boardJSON(Board) ->
lists:map(fun(Row) -> rowJSON(Row) end, Board).
tableCacheJSON(Cache) ->
lists:map(fun(#{actions := Actions, clock := Clock, board := Board}) ->
#{"actions" => actionsJSON(Actions),
"clock" => clockJSON(Clock),
"board" => boardJSON(Board)
}
end, Cache).
#{“availableTablePids”=>[“”],
“大厅”=>[],
“tableCache”=>,
“board”=>[[{“spawn”,“x”},
{“空”、“空”},
{“空”、“空”},
{“空”、“空”},
{“空”、“空”}],
[{“空”、“空”},
{“空”、“空”},
{“空”、“空”},
{“ridge”,“null”},
{“空”、“空”}],
[{“空”、“空”},
{“空”、“空”},
{“ridge”,“null”},
{“空”、“空”},
{“空”、“空”}],
[{“空”、“空”},
{“ridge”,“null”},
{“空”、“空”},
{“空”、“空”},
{“空”、“空”}],
[{“空”、“空”},
{“空”、“空”},
{“空”、“空”},
{“空”、“空”},
{“spawn”,“o”}]],
“时钟”=>{“当前”=>“x”,“o”=>3000,“状态”=>“未启动”,“x”=>3000}],
“tablePids”=>[“”]}
atomJSON(原子)->原子到列表(原子)。
tileJSON({Status,Sitter})->
[阿托姆森(地位),阿托姆森(坐席)]。
rowJSON(行)->
列表:地图(乐趣(平铺)->平铺(平铺)结束,行)。
董事会(董事会)->
列表:映射(乐趣(行)->rowJSON(行)结束,板)。
tableCacheJSON(缓存)->
列表:地图(乐趣(#{actions:=actions,clock:=clock,board:=board})->
#{“动作”=>actionsJSON(动作),
“时钟”=>clockJSON(时钟),
“板”=>boardJSON(板)
}
结束,缓存)。
程序没有崩溃。我原来的tileJSON函数有什么问题?很抱歉,无法使用您显示的代码进行复制。与编辑器中的代码相比,您可能对当前编译和加载的代码感到困惑。但是,如果您仍然认为有问题,请尝试重新创建失败的情况,并发布导致错误的确切代码
#{"availableTablePids" => ["<0.477.0>"],
"hall" => [],
"tableCache" => [#{"actions" => #{"current" => "x","o" => #{"next" => 0,"now" => 0},"x" => #{"next" => 0,"now" => 2}},
"board" => [[{"spawn","x"},
{"empty","null"},
{"empty","null"},
{"empty","null"},
{"empty","null"}],
[{"empty","null"},
{"empty","null"},
{"empty","null"},
{"ridge","null"},
{"empty","null"}],
[{"empty","null"},
{"empty","null"},
{"ridge","null"},
{"empty","null"},
{"empty","null"}],
[{"empty","null"},
{"ridge","null"},
{"empty","null"},
{"empty","null"},
{"empty","null"}],
[{"empty","null"},
{"empty","null"},
{"empty","null"},
{"empty","null"},
{"spawn","o"}]],
"clock" => #{"current" => "x","o" => 3000,"status" => "unstarted","x" => 3000}}],
"tablePids" => ["<0.477.0>"]}
atomJSON(Atom) -> atom_to_list(Atom).
tileJSON({Status, Sitter}) ->
[atomJSON(Status), atomJSON(Sitter)].
rowJSON(Row) ->
lists:map(fun(Tile) -> tileJSON(Tile) end, Row).
boardJSON(Board) ->
lists:map(fun(Row) -> rowJSON(Row) end, Board).
tableCacheJSON(Cache) ->
lists:map(fun(#{actions := Actions, clock := Clock, board := Board}) ->
#{"actions" => actionsJSON(Actions),
"clock" => clockJSON(Clock),
"board" => boardJSON(Board)
}
end, Cache).