Lua 基本语法

本文介绍了Lua编程语言的基础知识,包括交互式编程与脚本式编程两种方式,并详细讲解了Lua的语法特性,例如注释、标识符及关键词等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下内容转载自

http://www.runoob.com/lua/lua-basic-syntax.html


Lua 学习起来非常简单,我们可以创建第一个 Lua 程序!


第一个 Lua 程序

交互式编程

Lua 提供了交互式编程模式。我们可以在命令行中输入程序并立即查看效果。

Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:

$ lua -i 
$ Lua 5.3.0  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> 

在命令行中,输入以下命令:

> print("Hello World!")

接着我们按下回车键,输出结果如下:

> print("Hello World!")
Hello World
> 

脚本式编程

我们可以将 Lua 程序代码保持到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程,如我们将如下代码存储在名为 hello.lua 的脚本文件中:

print("Hello World!")
print("www.runoob.com")

使用 lua 名执行以上脚本,输出结果为:

$ lua test.lua
Hello World
www.runoob.com

我们也可以将代码修改为如下形式来执行脚本(在开头添加:#!/usr/local/bin/lua):

#!/usr/local/bin/lua

print("Hello World!")
print("www.runoob.com")

以上代码中,我们指定了 Lua 的解释器 /usr/local/bin directory。加上 # 号标记解释器会忽略它。接下来我们为脚本添加可执行权限,并执行:

./test.lua 
Hello World
www.runoob.com

注释

单行注释

两个减号是单行注释:

--

多行注释

--[[
 多行注释
 多行注释
 --]]

标示符

Lua 表示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。

最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。

Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。因此在 Lua 中 Runoob 与 runoob 是两个不同的标示符。以下列出了一些正确的标示符:

mohd         zara      abc     move_name    a_123
myname50     _temp     j       a23b9        retVal

关键词

以下列出了 Lua 的保留关键字。保留关键字不能作为常量或变量或其他用户自定义标示符:

and break do else
elseif end false for
function if in local
nil not or repeat
return then true until
while      

一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。


全局变量

在默认情况下,变量总是认为是全局的。

全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。

> print(b)
nil
> b=10
> print(b)
10
> 

如果你想删除一个全局变量,只需要将变量赋值为nil。

b = nil
print(b)      --> nil

这样变量b就好像从没被使用过一样。换句话说, 当且仅当一个变量不等于nil时,这个变量即存在。


### Lua基础语法概述 Lua 是一种轻量级脚本语言,具有简单而强大的特性。以下是关于 Lua基本语法介绍: #### 变量与数据类型 Lua 支持八种原生数据类型[^2],其中包括四种简单的变量类型(`nil`, `number`, `string`, 和 `boolean`),以及四种复杂的变量类型(`table`, `function`, `thread`, 和 `userdata`)。 - **Nil**: 表示无值的状态。 - **Number**: 用于表示整数和浮点数。 - **String**: 字符串可以通过双引号或单引号定义。 - **Boolean**: 包含两个值:`true` 和 `false`。 例如: ```lua a = nil -- Nil 类型 b = 10 -- Number 类型 c = "Hello" -- String 类型 d = true -- Boolean 类型 ``` #### 关键字 Lua 中的关键字列表如下[^3],这些关键字不能被用作变量名或其他标识符名称: - `and`, `break`, `do`, `else`, `elseif`, `end`, `false`, `for`, `function`, `if`, `in`, `local`, `nil`, `not`, `or`, `repeat`, `return`, `then`, `true`, `until`, `while`, `goto`. #### 字符串操作 字符串的操作是 Lua 程中的重要部分之一。通过内置的 `string` 库可以实现各种字符串处理功能。例如,使用 `string.sub()` 函数可以从指定位置提取子字符串[^1]。 代码示例: ```lua print(string.sub("Hello Lua", 4, 7)) --> 输出 'lo Lu' print(string.sub("Hello Lua", 2)) --> 输出 'ello Lua' print(string.sub("Hello Lua", -3, -1)) --> 输出 'ua' ``` #### 函数定义 函数在 Lua 中既可以作为普通的语句块存在,也可以作为一个表达式的返回值。匿名函数通常用于回调或者闭包场景中[^4]。 示例代码展示如何创建调用带参数的函数: ```lua -- 定义一个加法器函数 function add(a, b) return a + b end result = add(5, 3) -- 调用该函数将结果赋给 result print(result) --> 输出 8 ``` 对于更高级的应用场合,则可能涉及嵌套函数甚至闭包结构的设计思路。下面是一个利用闭包特性的实例演示: ```lua function createCounter(startValue) local count = startValue or 0 -- 初始化计数值,默认为零 return function() count = count + 1 -- 更新内部状态 return count -- 返回当前计数值 end end counterA = createCounter(10) -- 创建基于初始值 10 的计数器 A print(counterA()) --> 输出 11 print(counterA()) --> 输出 12 ``` --- #### 控制流语句 控制流程主要包括条件判断 (`if`)、循环迭代(`for`, `while`)等逻辑构建单元。这里给出几个典型片段供参考学习: ##### 条件分支 ```lua value = 5 if value > 0 then print("Positive number") --> 当 value>0 执行此条目 elseif value == 0 then print("Zero") else print("Negative number") end ``` ##### 循环遍历 ```lua for i=1,5 do -- 数值范围内的固定次数执行动作 print(i) end --> 分别输出 1 到 5 i = 1 -- 使用 while 实现相同效果 while i <= 5 do print(i) i = i + 1 -- 自增操作不可遗漏 end ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值