2017-12-01 11 views
1

アサーションを使用すると、出力として関数を使用すると、式が偽であるかどうかに関わらず常に関数を実行します。例:ルアアサートトリガ関数True評価でも

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! 

この関数は、trueまたはfalseのどちらであっても呼び出されます。

しかし、私はアサートの出力として、単純な文字列を使用している場合、それは正しく主張する:それは第二引数だとして

Q1 = 4 

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

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

答えて

1

アサートは、文字列を期待しています。関数を渡すと、の前にのactuall assertが実行されます。