Я конвертирую кортеж, полный объектов erlang, в карты, которые я планирую позже преобразовать в JSON.Почему этот список отображается как пустой, но кортежи будут разбираться хорошо?
Функция tileJSON вызывается с 2-мя элементами кортежа. Я ожидаю увидеть список строк с элементами в них на карте для каждого элемента tableCache. Вместо этого я вижу это:
#{"availableTablePids" => ["<0.477.0>"],
"hall" => [],
"tableCache" => [],
"tablePids" => ["<0.477.0>"]}
Установка tileJSON возвращать кортеж, как это:
tileJSON({Status, Sitter}) ->
{atomJSON(Status), atomJSON(Sitter)}.
Я получаю эти данные:
#{"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).
Программа не сбой. Что случилось с моей оригинальной функцией tileJSON?
Перезагружено все, и оно работает. спасибо – quantumpotato