Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在Erlang中编译嵌套if语句时出现语法错误_Erlang - Fatal编程技术网

尝试在Erlang中编译嵌套if语句时出现语法错误

尝试在Erlang中编译嵌套if语句时出现语法错误,erlang,Erlang,我目前正在处理这个类赋值,即在Erlang中创建一个btree,并创建一个能够删除其中元素的函数。从我的角度来看,我无法理解Erlang在编译代码时返回的错误 btree.erl:211:'end'之前的语法错误 据我所知这不是真的,但我一定是错的?我怀疑它存在于嵌套的if子句中,但我尝试根据此处对嵌套的if语句进行编码 我怀疑这可能只是一个小问题,我现在压力太大/看不见。任何帮助都将不胜感激 deleteBT(BTree = {ElementAtom,Height,Links,Rechts},

我目前正在处理这个类赋值,即在Erlang中创建一个btree,并创建一个能够删除其中元素的函数。从我的角度来看,我无法理解Erlang在编译代码时返回的错误

btree.erl:211:'end'之前的语法错误

据我所知这不是真的,但我一定是错的?我怀疑它存在于嵌套的if子句中,但我尝试根据此处对嵌套的if语句进行编码

我怀疑这可能只是一个小问题,我现在压力太大/看不见。任何帮助都将不胜感激

deleteBT(BTree = {ElementAtom,Height,Links,Rechts}, Element) ->
    if 
   
        Element > ElementAtom -> 
            NeuRechts = deleteBT(Rechts, Element),
            Hanoi = findHeight(NeuRechts, Links),
            {ElementAtom,Hanoi,Links,NeuRechts};
        
        Element < ElementAtom ->    
            NeuLinks = deleteBT(Links, Element),
            Hanoi = findHeight(NeuLinks, Rechts),
            {ElementAtom,Hanoi,NeuLinks,Rechts};

        Element == ElementAtom -> 
            if 
                BTree == {ElementAtom, Height, Links,{}} -> Links;
                
                BTree == {ElementAtom, Height, {},Rechts} -> Rechts;
                
                BTree == {ElementAtom, Height, {},{}} -> {};
                
                BTree == {ElementAtom, Height, Links,Rechts} ->
                    Kleinster = kLZahl(Rechts), %Findet uns die Kleinste Zahl vom übergebenen Baum
                    RechtsNeu = deleteBT(Rechts, Kleinster), 
                    Hanoi = findHeight(RechtsNeu, Links),
                    {Kleinster, Hanoi, Links, RechtsNeu};
                true -> -1
                end;
        true -> -1;
        end.
deleteBT(BTree={ElementAtom,Height,Links,Rechts},Element)->
如果
元素>元素原子->
NeuRechts=deleteBT(Rechts,元素),
河内=findHeight(NeuRechts,Links),
{ElementAtom,河内,Links,NeuRechts};
元素<元素原子->
NeuLinks=deleteBT(链接,元素),
河内=findHeight(NeuLinks,Rechts),
{ElementAtom,河内,NeuLinks,Rechts};
元素==元素原子->
如果
BTree=={ElementAtom,高度,链接,{}->Links;
BTree=={ElementAtom,Height,{},Rechts}->Rechts;
BTree=={ElementAtom,Height,{},{}}->{};
BTree=={ElementAtom,高度,链接,Rechts}->
Kleinster=kLZahl(记录),%Findet uns die Kleinste Zahl vomübergenen Baum
RechtsNeu=deleteBT(Rechts,Kleinster),
河内=findHeight(RechtsNeu,链接),
{Kleinster,河内,林克斯,RechtsNeu};
正确->-1
结束;
正确->-1;
结束。

我从你的评论中看到,你已经解决了这个问题

尽管如此,我还是想借此机会向您推荐一种简单的方法,使用模式匹配和:

Element>ElementAtom->
NeuRechts=删除(记录,元素),
Hanoi=查找高度(NeuRechts,链接),
{ElementAtom,河内,Links,NeuRechts};
当Element
NeuLinks=删除(链接、元素),
河内=查找高度(NeuLinks,Rechts),
{ElementAtom,河内,NeuLinks,Rechts};
删除bt({ElementAtom,{uAtom,Links,{},ElementAtom)->
联系;
删除bt({ElementAtom,{},Rechts},ElementAtom)->
记录;
delete_bt({ElementAtom,Height,Height,Links,Rechts},ElementAtom)->
Kleinster=kLZahl(记录),%Findet uns die Kleinste Zahl vomübergenen Baum
RechtsNeu=删除(Rechts,Kleinster),
河内=查找高度(RechtsNeu,链接),
{Kleinster,河内,林克斯,RechtsNeu};
删除\u bt(\u,\u)->
-1.

我找到了解决方案,在最后一个true条件中删除了一个分号。
结束之前的最后一个表达式不能有
谢谢你,jose,我也刚刚意识到了这一点。谢谢你的提示,这种编码方式看起来更具可读性,如果需要的话,以后更容易修改。我将在下一次任务中尝试实现这一点。但是来自Java和C,使用if语句感觉更容易,更接近我所习惯的。不管怎样,谢谢你的提示。
delete_bt({ElementAtom, _, Links, Rechts}, Element) when Element > ElementAtom ->
    NeuRechts = delete_bt(Rechts, Element),
    Hanoi = find_height(NeuRechts, Links),
    {ElementAtom, Hanoi, Links, NeuRechts};
delete_bt({ElementAtom, _, Links, Rechts}, Element) when Element < ElementAtom ->
    NeuLinks = delete_bt(Links, Element),
    Hanoi = find_height(NeuLinks, Rechts),
    {ElementAtom, Hanoi, NeuLinks, Rechts};
delete_bt({ElementAtom, _, Links, {}}, ElementAtom) ->
    Links;
delete_bt({ElementAtom, _, {}, Rechts}, ElementAtom) ->
    Rechts;
delete_bt({ElementAtom, Height, Height, Links, Rechts}, ElementAtom) ->
    Kleinster = kLZahl(Rechts), %Findet uns die Kleinste Zahl vom übergebenen Baum
    RechtsNeu = delete_bt(Rechts, Kleinster),
    Hanoi = find_height(RechtsNeu, Links),
    {Kleinster, Hanoi, Links, RechtsNeu};
delete_bt(_, _) ->
    -1.