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。