Lua - 变量

  • 简述

    变量只不过是程序可以操作的存储区域的名称。它可以包含不同类型的值,包括函数和表。
    变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写和小写字母是不同的,因为 Lua 区分大小写。Lua 中有八种基本类型的值 -
    在 Lua 中,虽然我们没有变量数据类型,但是根据变量的作用域,我们有三种类型。
    • 全局变量 − 所有变量都被视为全局变量,除非明确声明为局部变量。
    • 局部变量 − 当变量的类型被指定为局部时,其作用域受限于其作用域内的函数。
    • 表字段 - 这是一种特殊类型的变量,可以保存除 nil 以外的任何内容,包括函数。
  • Lua 中的变量定义

    变量定义意味着告诉解释器在哪里以及为变量创建多少存储空间。变量定义具有可选类型,并包含该类型的一个或多个变量的列表,如下所示 -
    
    type variable_list;
    
    这里, type 是可选的本地或指定类型使其成为全局的,并且 variable_list可以由一个或多个以逗号分隔的标识符名称组成。此处显示了一些有效的声明 -
    
    local    i, j
    local    i
    local    a,c
    
    线 local i, j两者都声明并定义了变量 i 和 j;它指示解释器创建名为 i、j 的变量并将作用域限制为局部。
    变量可以在它们的声明中初始化(分配一个初始值)。初始值设定项由一个等号后跟一个常量表达式组成,如下所示 -
    
    type variable_list = value_list;
    
    一些例子是 -
    
    local d , f = 5 ,10     --declaration of d and f as local variables. 
    d , f = 5, 10;          --declaration of d and f as global variables. 
    d, f = 10               --[[declaration of d and f as global variables. 
                               Here value of f is nil --]]
    
    对于没有初始化器的定义:具有静态存储持续时间的变量被隐式初始化为 nil。
  • Lua中的变量声明

    正如您在上面的示例中看到的,对多个变量的赋值遵循 variable_list 和 value_list 格式。在上面的例子中local d, f = 5,10 我们在变量列表中有 d 和 f,在值列表中有 5 和 10。
    Lua 中的赋值就像 variable_list 中的第一个变量与 value_list 中的第一个值等。因此,d 的值为 5,f 的值为 10。

    例子

    尝试以下示例,其中变量已在顶部声明,但它们已在主函数中定义和初始化 -
    
    -- Variable definition:
    local a, b
    -- Initialization
    a = 10
    b = 30
    print("value of a:", a)
    print("value of b:", b)
    -- Swapping of variables
    b, a = a, b
    print("value of a:", a)
    print("value of b:", b)
    f = 70.0/3.0
    print("value of f", f)
    
    当上面的代码被构建和执行时,它会产生以下结果 -
    
    value of a: 10
    value of b: 30
    value of a: 30
    value of b: 10
    value of f  23.333333333333
    
  • Lua 中的左值和右值

    Lua 中有两种表达式 -
    • lvalue− 引用内存位置的表达式称为“左值”表达式。左值可能出现在赋值的左侧或右侧。
    • rvalue− 术语右值是指存储在内存中某个地址的数据值。右值是一个不能为其赋值的表达式,这意味着右值可能出现在赋值的右侧,但不会出现在赋值的左侧。
    变量是左值,因此可能出现在赋值的左侧。数字文字是右值,因此不能赋值,也不能出现在左侧。以下是一个有效的声明 -
    
    g = 20
    
    但以下不是有效的语句,会产生构建时错误 -
    
    10 = 20
    
    在 Lua 编程语言中,除了上述类型的赋值,在同一个语句中还可以有多个左值和右值。它如下所示。
    
    g,l = 20,30
    
    在上面的语句中,20 被分配给 g,30 被分配给 l。