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

一种Erlang保护序列,用于检查一个术语是否是长度==n的列表,erlang,guard,Erlang,Guard,是否可以设置一个保护序列来检查术语类型及其长度?我读到第一个传球后卫让整个序列通过,所以我想当我检查这个术语是否是一个列表时,它不会检查其余的后卫。 代码如下: save_key(Key) when is_list(Key); length(Key) == 44 -> ok. 要将保护表达式与和组合,可以使用逗号而不是分号分隔它们,如前所述: 还请注意,由于防护中抛出的错误被忽略,因此您只需添加长度(Key)==44,即可获得与非列表抛出错误且与

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

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

    ok.

要将保护表达式与
组合,可以使用逗号而不是分号分隔它们,如前所述:

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

save_key(Key) when 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
save_key(Key) when length(Key) == 44 ->
    ok;
save_key(_) ->
    ko.