lua 运算符和控制语句

运算符

Lua 支持以下运算符:

  • 算术运算符:+(加),-(减),*(乘),/(除),^(幂),%(取模)。
  • 关系运算符:==(等于),~=(不等于),>(大于),>=(大于等于),<(小于),<=(小于等于)。
  • 逻辑运算符:and(与),or(或),not(非)。
  • 连接运算符:..(连接)。
  • 赋值运算符:=(赋值)。
lua 复制代码
print(1 + 2) -- 3
print(10 - 5) -- 5
print(2 * 3) -- 6
print(10 / 3) -- 3.3333333333333335
print(2 ^ 3) -- 8.0
print(10 % 3) -- 1
print(1 == 1) -- true
print(1 ~= 1) -- false
print(1 < 2) -- true
print(1 <= 2) -- true
print(1 > 2) -- false
print(1 >= 2) -- false
print(true and false) -- false
print(true or false) -- true
print(not true) -- false
print("Hello" .. "world!") -- Helloworld!
a = 10
a = a + 2 -- 12
print(a) -- 12
lua 复制代码
a, b = 1, 2; c = 1; d = 2
y, x = x, y -- swap(x,y)
x = 1, 2, 3
x, y = 1

print(a, b, c, d, x, y) -- 1 2 1 2 1 nil

a and b 当 a 为真时返回 b, 当 a 为假时,返回 a 条件表达式 a?b:a

a or b 当 a 为真时返回 a, 当 a 为假时,返回 b 条件表达式 a?a:b

not a 当 a 为真时返回假,当 a 为假时,返回真 条件表达式 a?false:true

lua 复制代码
local c = nil
local d = 0
local e = 100
print(c and d) -->打印 nil
print(c and e) -->打印 nil
print(d and e) -->打印 100
print(c or d) -->打印 0
print(c or e) -->打印 100
print(not c) -->打印 true
print(not d) -->打印 false

(a and {b} or {c})[1] --此时 a 为真,表达式为{b},为真,取其第一个元素的内容

变量

Lua 中的变量分为全局变量和局部变量。

全局变量:全局变量在整个程序中都可以访问,可以被赋值、修改。

所有的变量默是全局,除非显式地声明为 local 局部。全局变量,

可以不经定义直使用,默认为 nil

局部变量:局部变量只在函数内部访问,函数执行完毕后,局部变量会被销毁。

当类型被指定为 local 局部的一个变量,它的范围是有限的在自己的

范围内使用。需要加 local 修饰 ,默认值为 nil。

lua 复制代码
-- 全局变量
a = 10

-- 局部变量
function test()
  local b = 20
  print(a + b)
end

test() -- 30
print(a) -- 10

do end 块:do end 块可以用来创建临时变量,其中的变量只在 do end 块中有效。

lua 复制代码
do
  local temp = 10
  print(temp) -- 10
end

控制结构

Lua 支持以下控制结构:

  • if 语句:条件判断语句。
  • while 语句:循环语句。
  • repeat 语句:重复语句。
  • for 语句:循环语句。
  • function 语句:定义函数。
  • return 语句:返回语句。

if 语句

if 语句用于条件判断,根据条件是否成立,执行对应的代码块。

lua 复制代码
if a > 0 then
  print("a is positive")
elseif a < 0 then
  print("a is negative")
else
  print("a is zero")
end

while 语句

while 语句用于循环,当条件成立时,执行循环体代码。

lua 复制代码
i = 1
while i <= 10 do
  print(i)
  i = i + 1
end

repeat 语句

while 当假是退出, repeat 直到为真时才退出

repeat 语句用于重复执行代码块,直到条件不成立时结束。

Lua 中的 repeat 也

可以在使用 break 退出

lua 复制代码
i = 1
repeat
  print(i)
  i = i + 1
until i > 10
until false --死循环

for 语句

for 语句用于循环,可以指定起始值、终止值、步长,并在每次循环中执行代码块。

循环的控制变

量默认是局部的

lua 复制代码
for var = exp1, exp2 do
<执行体>
end

for var = exp1, exp2, exp3 do
<执行体>
end

exp1 开始值
exp2 终止值
exp3 步长
lua 复制代码
for i = 1, 10 do
  print(i)
end

for i = 1, 10, 2 do
  print(i)
end

generic for 语句

generic for 语句用于遍历数组、表、字符串等。

ipairs 是 Lua 提供的一个迭代器函数,用来迭代数组

lua 复制代码
a = {1, 2, 3, 4, 5}

for i, v in ipairs(a) do
  print(i, v)
end

print("--------")

for k, v in pairs(a) do
  print(k, v)
end
相关推荐
ad禥思妙想17 分钟前
如何运行python脚本
开发语言·python
Matlab程序猿小助手17 分钟前
【MATLAB源码-第218期】基于matlab的北方苍鹰优化算法(NGO)无人机三维路径规划,输出做短路径图和适应度曲线.
开发语言·嵌入式硬件·算法·matlab·机器人·无人机
威威猫的栗子18 分钟前
用 Python 与 Turtle 创作属于你的“冰墩墩”!
开发语言·python·turtle
IT古董24 分钟前
【机器学习】超简明Python基础教程
开发语言·人工智能·python·机器学习
黑客Ash26 分钟前
网络安全知识点
开发语言·php
童先生35 分钟前
如何将java项目打包成docker 镜像并且可运行
java·开发语言·docker
feilieren37 分钟前
SpringBoot 2.x 整合 Redis
java·开发语言·spring
晓看天色*37 分钟前
[JAVA]MyBatis框架—获取SqlSession对象
java·开发语言·前端
捕鲸叉1 小时前
C++创建型模式之生成器模式
开发语言·c++·建造者模式
ZVAyIVqt0UFji1 小时前
Reactflow图形库结合Dagre算法实现函数资源关系图
开发语言·前端·javascript·ecmascript