gpt4 book ai didi

erlang - 一个 Erlang 保护序列,用于检查一个术语是否是一个长度 == n 的列表

转载 作者:行者123 更新时间:2023-12-02 04:07:33 25 4
gpt4 key购买 nike

是否可以放置一个保护序列来检查术语类型及其长度?我读到第一个通过的守卫使整个序列通过,所以我想当我检查该术语是一个列表时,它不会检查其余的守卫。这是代码:

save_key(Key)
when
is_list(Key);
length(Key) == 44 ->

ok.

最佳答案

为了将保护表达式与 结合起来,您可以使用逗号而不是分号来分隔它们,如前面提到的 here :

-module(a).
-export([save_key/1]).

save_key(Key)
when
is_list(Key),
length(Key) == 44 ->
ok;
save_key(_) ->
ko.
1> c(a).
{ok,a}
2> a:save_key([]).
ko
3> a:save_key(nil).
ko
4> a:save_key(lists:seq(1, 44)).
ok

另请注意,由于防护中抛出的错误被忽略,因此您只需添加 length(Key) == 44 即可获得与非列表相同的行为,该行为将抛出错误并且不会匹配该子句:

save_key(Key) when length(Key) == 44 ->
ok;
save_key(_) ->
ko.

关于erlang - 一个 Erlang 保护序列,用于检查一个术语是否是一个长度 == n 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38658835/

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