1
我正在erlang编写一个函数,它应该能够接受不同顺序和不同格式的各种参数集,我使用非常严格的警卫来确保正确的匹配。在长卫士中删除orelse和andalso
的情况并不少见,我写了一个很长卫是这样的:在这里
my_fun(List, Number, OptionalList, Record)
when is_list(List) andalso length(List) >= 5,
is_integer(Number) andalso Number >= 10 andalso Number =< 50 orelse Number =:= undefined,
is_list(OptionalList) orelse OptionalList =:= undefined,
is_record(Record, my_record) ->
我使用否则别指望和andalso了很多,这让代码少了很多可读的,只是一般较长。
有没有一种方法来实现相同的保护逻辑使用,并;只要?
考虑使用宏?例如,当“is_integer_in_range(数字,10,50)”时。 –