尝试使用合并排序对字符串列表进行排序。我的问题是我不知道如何比较字符串的第一个字母。
我的想法是这样,但这会导致两个问题:
merge([],X) -> X;
merge(X,[]) -> X;
merge([X|XS],[Y|YS]) when check_swap(X,Y)-> [X] ++ merge(XS,[Y|YS]);
merge([X|XS],[Y|YS]) -> [Y] ++ merge([X|XS], YS).
sort([]) -> [];
sort([A|[]])-> [A];
sort (L) -> Len=length(L) div 2,
merge(sort(lists:sublist(L, Len)),sort(lists:nthtail(Len, L))).
%check if strings should be swaped or not
change_strings(StingA,StringB) when lists:nth(1,StingA)<lists:nth(1,StringB)->true;
....
问题是我不能在 when、case 或 if 之后调用函数。这样做的更好方法是什么?
./textSort.erl:28:对本地/导入函数 check_swap/2 的调用在警卫中是非法的
问题:如何将各种条件与 AND 和 OR 结合起来。我什么时候使用 ", ; or and orelse andalso" 以及如何像在其他语言中一样将它们与 () 顺序结合起来?有没有更好的办法
change_strings(X,Y) 当 (A < B,B==3) ; (A < B,B==4) -> 真;
愿它很容易失败。刚开始使用erlang。