Lua断言在函数为真时触发执行

使用assert时,当我将一个函数作为输出结果时,无论表达式是真是假,它都会执行该函数。例如:

local function printError()
    print("必须是4!")
end

Q1 = 4

assert(Q1 == 4,printError())

--输出
--Q1 = 1 >> 必须是4!
--Q1 = 4 >> 必须是4!

无论是真还是假,该函数都被调用了。

但是如果我将简单字符串作为assert的输出,那么它会正确地触发断言:

Q1 = 4

assert(Q4 == 4,"必须是4!")

--输出
--Q1 = 1 >> 必须是4!
--Q1 = 4 >>
点赞
用户2420301
用户2420301

assert 需要一个字符串作为它的第二个参数。如果你传递了一个函数,这个函数会在实际的 assert 执行之前被执行。

2017-12-01 09:46:16