Lua 变量
Lua 变量
简介
在Lua中,变量是用来存储数据或值的。每个变量都具有自己的名称,以便于在程序中进行引用。当我们使用变量时,我们实际上是在引用存储在变量中的值。
命名规则
Lua的变量名由字母、数字和下划线组成,但是必须以字母或下划线开头。另外,Lua变量名是区分大小写的。以下是一些Lua变量名的示例:
local myVar
local my_var
local myVar123
local MyVar
定义变量
Lua是一门动态语言,它不需要在使用变量之前显式地定义它们。因此,当你给一个变量赋值时,你实际上是在定义它。
以下是一些定义变量的示例:
local a = 10
local b = "Hello, World!"
local c = true
这里我们定义了三个变量a、b、c,分别存储了一个整数、一个字符串和一个布尔值。
变量作用域
在Lua中,变量的作用域是由它们的声明位置决定的。如果一个变量在一个函数或代码块的内部声明,那么它只能在这个函数或代码块的内部访问。
以下是一些变量作用域的示例:
-- 全局变量
globalVar = 20
function myFunction()
-- 局部变量
local localVar = 10
print(globalVar) -- output: 20
print(localVar) -- output: 10
end
myFunction()
print(globalVar) -- output: 20
print(localVar) -- output: nil
在这个示例中,我们定义了一个全局变量globalVar,并在myFunction函数内定义了一个局部变量localVar。由于globalVar是全局变量,所以它可以在myFunction和程序的最外部访问。但是,localVar是myFunction函数的局部变量,所以它只能在该函数内部使用。当我们在函数外部尝试访问它时,我们得到的是一个空值nil。
变量类型
Lua是一种动态地类型语言,这意味着变量的类型在运行时而不是在编译时确定。 Lua拥有8种基本类型,包括:nil、boolean、number、string、table、function、userdata和thread。
以下是一些变量类型的示例:
local a = nil
local b = true
local c = 100
local d = "Hello, World!"
local e = {1, 2, 3, 4}
local f = function() return "I'm function" end
local g = io.stdin
local h = coroutine.create(function() print("I'm coroutine") end)
在这个示例中,我们定义了7个不同类型的变量,包括nil、boolean、number、string、table、function和userdata。
变量赋值
Lua 中的变量赋值通常使用“=”符号。当我们对一个变量进行赋值时,我们实际上是在将一个值存储在该变量中。
以下是一些变量赋值的示例:
local a = 10
local b = 20
local c = a + b
local d = "Hello, " .. "World!"
local e = {name="John", age=30}
print(c) -- output: 30
print(d) -- output: Hello, World!
print(e.name) -- output: John
在这个示例中,我们定义了几个变量,并对它们进行了赋值。我们还定义了一个变量c,它是变量a和b的和。我们还定义了一个变量d,它是两个字符串的连接。我们还定义了一个变量e,它是一个表,包含名字和年龄字段。
变量允许多重赋值
在Lua中,我们可以在单个语句中将多个变量赋值给不同的值。
以下是一个变量多重赋值的示例:
local a, b, c = 10, 20, 30
print(a) -- output: 10
print(b) -- output: 20
print(c) -- output: 30
在这个示例中,我们定义了三个变量a、b、c,并将它们分别赋值为10、20和30。
变量默认值
在Lua中,当我们声明一个变量但未指定初始值时,它具有nil值。如果我们在函数中声明一个变量,但未给它赋初始值,它也是nil。
以下是一些变量默认值的示例:
local a
local b = nil
local c = 10
print(a) -- output: nil
print(b) -- output: nil
print(c) -- output: 10
在这个示例中,我们定义了三个变量,并尝试输出它们的值。由于a和b未被赋值,它们都是nil。但是c被赋为10,因此它的值是10。