使用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 >>
答案 0 :(得分:1)
断言期望一个字符串作为它的第二个参数。如果传递函数,则在执行执行断言之前执行此函数。