官术网_书友最值得收藏!

  • Lua Quick Start Guide
  • Gabor Szauer
  • 380字
  • 2021-08-05 10:30:41

Logical operators

Logical operators test the relationship of two statements. Logical operators work a little differently in Lua than in other languages. In Lua, anything not false is considered to be true. Only two values represent false for a logical operator, the constant value of false and nil; anything else is true.

Logical operators in Lua do not evaluate to a Boolean result; rather they evaluate to one of the provided operands.

The and operator returns its first operand if that operand is false and the second operand if the first operand was true. Here is an example:

x = true and false -- value is false
y = false and false -- value is false
z = true and true -- value is true
w = 7 and 1 -- value is 1

The or operator (or) returns its second operand if it is not false, otherwise it will return the first operand. Here is an example:

x = true or false -- value is true
y = false or false -- value is false
z = true or true -- value is true
w = 7 or 1 -- value is 7

The and/or operators both use shortcut evaluation. This means that the second operand is only evaluated if needed. This is important when the operands are functions. Here is an example:

function TrueFunction()
print ("returning true")
return true
end

function FalseFunction()
print ("returning false")
return false
end

x = FalseFunction() and TrueFunction()

This statement only evaluates the false function. Only returning false is printed. But if we changed the line that assigns x to be the following:

x = TrueFunction() and FalseFunction()

After changing the line, both functions will evaluate, and both returning true and returning false will be printed. Shortcut evaluation can make bugs difficult to spot; for this reason, try to avoid functions as operands when using logical operators.

The logical not operator is a unary operator. It reverses the logical state of its operand. Provided with a value that is false, this operator will evaluate to true. Provided with a value that is true, the operator evaluates to false. Here is an example:

x = not true -- false
y = not true or false -- false
z = not not false -- false
w = not (7 + 1) -- false
主站蜘蛛池模板: 汝南县| 什邡市| 光山县| 平武县| 醴陵市| 永泰县| 武清区| 巫溪县| 咸宁市| 昌江| 大余县| 克拉玛依市| 民勤县| 吴川市| 民勤县| 九台市| 龙口市| 陕西省| 龙江县| 汝城县| 富阳市| 平度市| 台江县| 克拉玛依市| 南靖县| 云霄县| 清丰县| 郁南县| 治多县| 喀什市| 凉城县| 滨海县| 武邑县| 鸡泽县| 南涧| 皋兰县| 叙永县| 许昌市| 康保县| 昔阳县| 六盘水市|