gpt4 book ai didi

elixir - 修改列表列表中的列

转载 作者:行者123 更新时间:2023-12-02 17:10:44 25 4
gpt4 key购买 nike

我有一个列表列表,因此

list = [[title, description, ~N[2018-01-01 23:00:07], comment, user],
[title, description, ~N[2018-03-02 12:10:18], comment, user]]

现在我需要将每个 NaiveDateTime 转换为 Erlang 日期(或 Unix 时间戳)。

我相信我可以做类似的事

new_list = Enum.map(list,&modify_date/1)

def modify_date(list) do
##
end

但我不知道如何让 modify_date/1 只影响第三个元素。有什么想法吗?

最佳答案

Elixir 中解决这个问题的最简单和最惯用的方法是直接进行模式匹配。与目前提出的其他解决方案相比,这将大大提高可读性。

你关于使用 Enum.map(list, &modify_date/1) 是正确的,如果你像这样进行模式匹配:

modify_date([标题、描述、日期、评论、用户])

您可以轻松挑选出您需要的任何数据并进行相应操作。

下面给出了一个完整的工作解决方案,您可以将其作为 A.run() 运行:

 defmodule A do
def run do
[["title", "description", ~N[2018-01-01 23:00:07], "comment", "user"], ["title", "description", ~N[2018-03-02 12:10:18], "comment", "user"]]
|> process
end

def process(list) do
Enum.map(list, &modify_date/1)
end

def modify_date([title, description, date, comment, user]) do
unix_timestamp = date
|> DateTime.from_naive!("Etc/UTC")
|> DateTime.to_unix()

[title, description, unix_timestamp, comment, user]
end
end

关于elixir - 修改列表列表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49403559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com