如何正确调用 Enum.map 中的函数?
How can I properly call functions within Enum.map?
我正在尝试将字符串时间戳转换为 unix 时间,但是,我 运行 出现以下错误:
(CompileError) nested captures via & are not allowed: &(NativeDateTime.diff(&1, ~N[1970-01-01 00:00:00]))
我不熟悉 & 在 Elixir 中的功能。我要修复的代码片段是:
|> Enum.map(fn
[user_id, state, timestamp] ->
unix = &NativeDateTime.from_iso8601(&1, timestamp)
|> &NativeDateTime.diff(&1,~N[1970-01-01 00:00:00])
无需尝试在 fn end
块内定义额外的匿名函数 - 您只需将参数用于常规函数调用即可。
这对我有用:
[[nil, nil, "2022-05-24T19:00:30.510232Z"]]
|> Enum.map(fn [_user_id, _state, timestamp] ->
{:ok, datetime, 0} = DateTime.from_iso8601(timestamp)
DateTime.to_unix(datetime)
end)
输出:
[1653418830]
我正在尝试将字符串时间戳转换为 unix 时间,但是,我 运行 出现以下错误:
(CompileError) nested captures via & are not allowed: &(NativeDateTime.diff(&1, ~N[1970-01-01 00:00:00]))
我不熟悉 & 在 Elixir 中的功能。我要修复的代码片段是:
|> Enum.map(fn
[user_id, state, timestamp] ->
unix = &NativeDateTime.from_iso8601(&1, timestamp)
|> &NativeDateTime.diff(&1,~N[1970-01-01 00:00:00])
无需尝试在 fn end
块内定义额外的匿名函数 - 您只需将参数用于常规函数调用即可。
这对我有用:
[[nil, nil, "2022-05-24T19:00:30.510232Z"]]
|> Enum.map(fn [_user_id, _state, timestamp] ->
{:ok, datetime, 0} = DateTime.from_iso8601(timestamp)
DateTime.to_unix(datetime)
end)
输出:
[1653418830]