-1
我試圖寫我自己的filter
函數並且遇到錯誤。代碼:使用衛士定製`過濾器`功能
filter_acc(_, [], Result) -> Result;
filter_acc(F, [H|T], Result) when F(H) =:= true -> filter_acc(F, T, [H | Result]).
filter(F, L) -> filter_acc(F, L, []).
錯誤:
my_functions.erl:11: illegal guard expression
error
能功能不被評估爲保護表達式的一部分嗎?如果不是,這是怎麼做的?
爲了保證性能,只有少量的短BIF和比較允許在守衛中(例外:長度可能很長,如果列表很大)。 – Pascal
@Pascal它不只是表現。 「if」塊中的守衛和條件語句不能運行具有副作用的代碼,因此它們限制了已知爲副作用的函數。 – RichN