- 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.
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
- C語言程序設計實踐教程(第2版)
- Visual FoxPro程序設計教程(第3版)
- Python機器學習:數據分析與評分卡建模(微課版)
- PaaS程序設計
- Linux核心技術從小白到大牛
- 自己動手寫Java虛擬機
- Data Analysis with Stata
- MATLAB定量決策五大類問題
- Windows Forensics Cookbook
- 概率成形編碼調制技術理論及應用
- Visual C#.NET程序設計
- 計算機應用基礎實踐教程
- Terraform:多云、混合云環境下實現基礎設施即代碼(第2版)
- Test-Driven JavaScript Development
- IoT Projects with Bluetooth Low Energy