即使有真正的评估,Lua断言触发器功能

时间:2017-12-01 09:41:20

标签: lua

使用assert,当我使用函数作为输出时,无论表达式是否为假,它总是执行函数?例如:

local function printError()
    print("Must be 4!")
end

Q1 = 4

assert(Q1 == 4,printError())

--Output
--Q1 = 1 >> Must be 4!
--Q1 = 4 >> Must be 4!

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

但是如果我使用一个简单的字符串作为断言的输出,那么它就会正确断言:

Q1 = 4

assert(Q4 == 4,"Must be 4!")

--Output
--Q1 = 1 >> Must be 4!
--Q1 = 4 >>

1 个答案:

答案 0 :(得分:1)

断言期望一个字符串作为它的第二个参数。如果传递函数,则在执行执行断言之前执行此函数。