gpt4 book ai didi

list - 打印 Erlang 列表中的每个元素

转载 作者:行者123 更新时间:2023-12-04 13:59:12 26 4
gpt4 key购买 nike

我创建了一个函数,该函数将检查给定列表中是否有偶数,然后将偶数收集在列表中。但是,我被困在我想在新行中打印出该列表中的每个偶数的地方。

这是我的代码片段:

even_print([])-> [];
even_print([H|[]]) -> [H];
even_print([H|T]) when H rem 2 /= 0 -> even_print(T);
even_print([H|T]) when H rem 2 == 0 -> [H|even_print(T)],
io:format("printing: ~n", H).

我想也许列表理解,但我也想尝试没有列表理解。

最佳答案

您非常接近,但是这里有几个可疑的函数子句:

  • 第二个子句,参数为 [H|[]] , 不需要,因为以下子句带有 [H|T]参数将处理 T 时的情况是 [] .
  • 最后一个子句不需要保护,因为第三个子句已经跳过了每个奇数值。注意它构造的列表,[H|even_print(T)] ,只是因为您没有使用它而被丢弃在这里。它需要是函数中的最后一个表达式,因此它被视为返回值。此外,最后一个参数 io:format/2必须有一个列表,加上格式字符串是错误的,因为它不包含打印该参数的指令。

  • 进行这些更改,我们最终得到了这个:
    -module(e).
    -export([even_print/1]).

    even_print([])-> [];
    even_print([H|T]) when H rem 2 /= 0 ->
    even_print(T);
    even_print([H|T]) ->
    io:format("printing: ~p~n", [H]),
    [H|even_print(T)].

    如果我们在 Erlang shell 中运行它,我们会得到:
    3> e:even_print(lists:seq(1,10)).
    printing: 2
    printing: 4
    printing: 6
    printing: 8
    printing: 10
    [2,4,6,8,10]

    如果您不想打印,只需删除 io:format/2称呼。

    关于list - 打印 Erlang 列表中的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32659084/

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