Lua 中将函数和数字进行比较

    start = io.read()
    if start == "start" then
    xpr = 50
    xp = 75
    function level()
        if xp >= xpr and level < 50 then
            xpr = xpr * 1.5
            level = level + 1
            io.write("祝贺你没有死亡并失去所有进度!", "\n")
            io.write("你的等级是", level, "\n")
            io.write("现在你必须分配你的技能点", "\n")
            sp = 6
            io.write("力量:", "\n")
            strsp = io.read()
            stre = stre + strsp
            if strsp < sp then
                io.write("只剩下", sp, "点技能点", "\n")
                str = str + 6
            end
            io.write("敏捷:", "\n")
            dexsp = io.read()
            dex = dex + dexsp
            if dexsp < sp then
                io.write("只剩下", sp, "点技能点", "\n")
                dex = dex + 6
            end
            io.write("体质:", "\n")
            consp = io.read()
            con = con + consp
            if consp < sp then
                io.write("只剩下", sp, "点技能点", "\n")
                con = con + 6
            end
            io.write("智力:", "\n")
            intsp = io.read()
            int = int + intsp
            if intsp < sp then
                io.write("只剩下", sp, "点技能点", "\n")
                int = int + 6
            end
            io.write("智慧:", "\n")
            wissp = io.read()
            wis = wis + wissp
            if wissp < sp then
                io.write("只剩下", sp, "点技能点", "\n")
                wis = wis + 6
            end
            io.write("魅力:", "\n")
            chasp = io.read()
            cha = cha + chasp
            if chasp < sp then
                io.write("只剩下", sp, "点技能点", "\n")
                cha = cha + 6
            end
        end
    end
 end

print(level(xp))

这是我的代码。但会返回如下错误:

lua: attempt to compare function with number

我该如何解决这个问题?

原文链接 https://stackoverflow.com/questions/71034997

点赞
stackoverflow用户2858170
stackoverflow用户2858170

将下面翻译成中文并且保留原本的 markdown 格式

比较一个函数和一个数字是没有意义的。

function level() endlevel = function () end 的语法糖。如果你想知道为什么 level 是一个函数值,就看这个。

level < 50 比较你的全局函数 level50

你调用了 level(xp) 但是 level 并没有任何参数。

你需要将你想要与 50 进行比较的函数或变量重命名。无论哪种方式,你都需要将该变量初始化为一个数字值,否则将会因为将 nil 与数字进行比较而得到一个错误。

2022-02-08 14:24:10