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)」時。 –