Skip to content

Commit

Permalink
simplify the explaination of 'and' and 'or' operator (moonbingbing#357)
Browse files Browse the repository at this point in the history
  • Loading branch information
OrezzerO authored Dec 29, 2022
1 parent 11d8f93 commit dda11ac
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions lua/operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,11 @@ a~=b
Lua 中的 and 和 or 是不同于 C 语言的。在 C 语言中,and 和 or 只得到两个值 1 和 0,其中 1 表示真,0 表示假。而 Lua 中 and 的执行过程是这样的:

- `a and b`:
- 若 a 为 nil 或 false,b 为任意的真值,则返回 a **(即 nil 或 false)**,与出现顺序无关;
- 若 a 为 nil,b 为 false,则哪个 **先出现** 就返回哪个(短路求值);
- 若 a,b 均为真值,则返回 **后出现** 的那个值。
- 若 a 为 nil 或 false,b 为任意的值,则返回 a **(即 nil 或 false)** (短路求值)
- 若 a 为真值,则返回 **b** 的那个值。
- `a or b`:
- 若 a 为 nil 或 false,b 为任意的真值,则返回 b **(即真值)**,与出现顺序无关;
- 若 a 为 nil,b 为 false,则返回 **后出现** 的那个;
- 若 a,b 均为真值,则返回 **先出现** 的那个值(短路求值)。
- 若 a 为 nil 或 false,b 为任意的值,则返回 b
- 若 a 为真值,则返回 **a** 的那个值(短路求值)。

> 示例代码:test3.lua
Expand Down

0 comments on commit dda11ac

Please sign in to comment.