Lua中无返回值函数在if语句中的求值规则探究
Lua无返回值函数在if语句中的求值逻辑
先看你给出的Lua代码:
function foo() end if foo() then end
核心逻辑
Lua里没有显式写return语句的函数,默认返回nil。而if语句的条件判断规则很明确:只把nil和false判定为"假",其余所有值(包括0、空字符串这类在其他语言里会被视为假的值)都算"真"。你测试得到的结果本质是foo()返回了nil,被if语句判定为假。
行为的确定性
这是Lua语言规范明确规定的行为,不存在"在其他环境返回不同值"的情况。不管是标准Lua解释器还是LuaJIT等衍生实现,无返回值函数都会默认返回nil,if语句对nil的判定逻辑完全一致。
内容的提问来源于stack exchange,提问作者Tergiver
相关产品推荐
相关产品推荐

