auf dem Code der Suche ich ein Problem sehen, dass dieser besonderen Ausnahmefehler
publ_top(_,[],Accumulated,Level) ->
%% Go through the accumulated list of hashes from the prior level
publ_top(string:len(Accumulated),Accumulated,[],Level+1);
publ_top(FullLevelLen,RestofLevel,Accumulated,Level) ->
case FullLevelLen =:= 1 of
false -> [F,S|T]=RestofLevel,
io:format("~w---~w~n",[F,S]),
publ_top(FullLevelLen,T,lists:append(Accumulated,[erlang:phash2(string:concat([F],[S]))]),Level);
true -> done
end.
In der ersten Funktionsdeklaration erzeugen würden Sie gegen die leere Liste übereinstimmen. In der zweiten Deklaration stimmen Sie mit einer Liste der Länge (mindestens) 2 überein ([F,S|T]
). Was passiert, wenn FullLevelLen
sich von 1 unterscheidet und RestOfLevel
eine Liste der Länge 1 ist? (Tipp: Sie erhalten den obigen Fehler).
würde der Fehler einfacher, wenn Sie auf die Funktionsargumente würde Mustererkennung zu erkennen, vielleicht so etwas wie:
publ_top(_,[],Accumulated,Level) ->
%% Go through the accumulated list of hashes from the prior level
publ_top(string:len(Accumulated),Accumulated,[],Level+1);
publ_top(1, _, _, _) ->
done;
publ_top(_, [F,S|T], Accumulated, Level) ->
io:format("~w---~w~n",[F,S]),
publ_top(FullLevelLen,T,lists:append(Accumulated,[erlang:phash2(string:concat([F],[S]))]),Level);
%% Missing case:
% publ_top(_, [H], Accumulated, Level) ->
% ...
Wenn Sie neugierig sind, ist die App hier beschrieben: http: //wiki.github .com/AndreasBWagner/nivoa – andreasw