有一個庫可以做到這一點以及嵌套數據的其他轉換。
iex(1)> h PhStTransform.transform
def transform(data_structure, function_map, depth \\ [])
使用給定function_map
轉化任何藥劑data structure
。
function_map
應該包含對應於數據類型的密鑰被變換爲 。每個鍵必須映射到將該數據類型和深度列表作爲參數的函數。
depth
應始終保持默認值,因爲它是用於內部遞歸。
實例
iex> atom_to_string_potion = %{ Atom => fn(atom) -> Atom.to_string(atom) end }
iex> PhStTransform.transform([[:a], :b, {:c, :e}], atom_to_string_potion)
[["a"], "b", {"c", "e"}]
iex> foo = {"foo", "bar", {"foo", "bar"}}
{"foo", "bar", {"foo", "bar"}}
iex> PhStTransform.transform(foo, %{Tuple => fn(tuple) -> Tuple.to_list(tuple) end})
["foo", "bar", ["foo", "bar"]]
https://hex.pm/packages/phst_transform