1

Lua関数で使用するelseifに問題があります。Windows で LuaEdit 2010 を使用していますが、最初のコードの場合、プログラムがフリーズします。2番目のものは機能しますが、かなり醜く、より多くのelseifsの場合もかなり使用できません. どちらの場合も機能するはずですが、そうではなく、理由がわかりません。助けてください。Lua Edit は機能が閉じていないようです。このコードは機能していません

function read_this()
    char=read_char()
    word=""
    if char=="~" then    word = word..char
                        char=read_char()
                        if char == "+" then      
                               formating=true 
                               word=word..char
                        elseif char == "-" then 
                               formating=false
                               word = word..char 
                        else word = word..char
                        end
                    write(word,file2)
    else    print("something what is not problem")
    end                 
end

このコードは私のために働いています。

function read_this()
    char=read_char()
    word=""
    if char=="~" then    word = word..char
                        char=read_char()
                        if char == "+" or char == "-" then  
                               if char == "+" then formating=true end
                               if char == "-" then formating=false end
                               word = word..char 
                        else word = word..char
                        end
                    write(word,file2)
    else    print("something what is not problem")
    end                 
end
4

1 に答える 1

4

どちらの例も機能的には同じように見えます。改行、スペース、インデントの使用に本当に取り組みます。あなたのやり方は本当に面倒に見えるからです。私が書く最初の例

function read_this()
    char = read_char()
    word = ""
    if char == "~" then
        word = word .. char
        char = read_char()
        if char == "+" then      
            formating = true 
            word = word .. char
        elseif char == "-" then 
            formating = false
            word = word .. char 
        else
            word = word .. char
        end
        write(word,file2)
    else
        print("something what is not problem")
    end                 
end

私が気づいたことは、どのような場合でもword = word .. charとにかく実行するので、すべての if ステートメントに入れ、次のように後に置く必要がないということです。

function read_this()
    char = read_char()
    word = ""
    if char == "~" then
        word = word .. char
        char = read_char()
        if char == "+" then      
            formating = true 
        elseif char == "-" then 
            formating = false 
        end
        word = word .. char
        write(word,file2)
    else
        print("something what is not problem")
    end                 
end
于 2015-03-12T10:26:38.500 に答える