变量

作者: 爱折腾的傻小子 | 来源:发表于2021-01-04 09:50 被阅读0次

Lua变量

  • 变量在使用前,必须在代码中进行声明,即创建该变量(编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值)
  • Lua 变量有三种类型:全局变量、局部变量、表中的域
    • 函数外部的变量默认为全局变量,除非用local声明为局部变量
    • 函数内的变量与函数的参数默认为局部变量
  • 局部变量的作用域为从声明位置开始到所在语句块结束(或直到下一个同名局部变量的声明)
  • 变量的默认值均为 nil
bb1 = 10        -- 全局变量
local bb2 = 1   -- 局部变量

function j()
    cc = 1          -- 全局变量
    local dd = 2    -- 局部变量
end

print(bb1)  -- 10
print(bb2)  -- 1
j()
print(cc)   -- 1
print(dd)   -- nil

-- 代码块
do
    local aa1a = 4      -- 局部变量
    cds = 2             -- 全局变量
    print(aa1a, cds)    -- 4 2
end

print(aa1a, cds)        -- nil 2

赋值语句

  • 赋值是改变一个变量的值和改变表域的最基本的方法
-- 赋值语句
axa = "hello" .. "world!"
t = {n = 1}
t.n = t.n + 1
print(axa)  -- helloworld!
print(t.n)  -- 2
  • Lua可以对多个变量同时赋值
    • 变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量
t1, t2 = 1, 11
print(t1, t2)   -- 1 11
  • 遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值
t1, t2 = 1, 11
print(t1, t2)   -- 1 11

-- 变量值交换 swap
t1, t2 = t2, t1
print(t1, t2)   -- 11 1

ss = {2, 4}
-- swap lua的键从1开始
ss[1], ss[2] = ss[2], ss[1]
print(ss[1], ss[2]) -- 4 2
  • 当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略
a. 变量个数 > 值的个数             按变量个数补足nil
b. 变量个数 < 值的个数             多余的值会被忽略 
axaa, axbb, axcc = 1,2
print(axaa, axbb, axcc) -- 1 2 nil

ada, adq = 5, 6, 9
print(ada, adq)         -- 5 6

-- 注意这种赋值情况
csf, wdf, edda = 2
print(csf, wdf, edda)   -- 2 nil nil

fgr, dkd, ofr = 2, 2, 2
print(fgr, dkd, ofr)    -- 2, 2, 2
  • 多值赋值经常用来交换变量,或将函数调用返回给变量
function t()
    return 111, 200
end

-- t()返回两个值,第一个赋值给gg1,第二个值返回给gg2
gg1, gg2 = t()
print(gg1, gg2) -- 111 200
  • 应该尽可能的使用局部变量,总结
    • 避免命名冲突
    • 访问局部变量的速度比全局变量更快

索引

  • 对 table 的索引使用方括号 []
  • Lua 也提供了 . 操作
site = {}
site["key"] = "csd sss"
print(site["key"])  -- csd sss
print(site.key)  -- csd sss

相关文章

  • mysql变量

    变量 /*系统变量:全局变量会话变量 自定义变量:用户变量局部变量 */ 一、系统变量 /*说明:变量由系统定义,...

  • mysql存储过程和函数149-169

    变量 /*系统变量:全局变量会话变量自定义变量:用户变量局部变量*/ 一、系统变量 说明:变量有系统提供,不是用户...

  • php 变量和常量

    一、变量 创建变量以 $ 开头,以 ; 结尾 可变变量从变量中解析出变量名 变量赋值 将变量b 将变量b 销毁变量...

  • Golang入门一:变量

    变量声明 变量初始化 变量赋值 变量交换 匿名变量

  • bash脚本编程-变量,变量类型

    bash变量类型: 环境变量,本地变量,位置变量,特殊变量。 本地变量: bash: VARNAME=value ...

  • MySQL(十八)变量

    系统变量:全局变量、会话变量 自定义变量:用户变量、局部变量 一、系统变量 说明:变量由系统定义,不是用户定义,属...

  • 类,变量,迭代器

    1、变量 python中实际有4种变量,分别是全局变量,类变量,实例变量,局部变量。 - 全局变量:类之外的变量,...

  • Linux下的变量

    Linux下的变量 Linux变量 Linux下的变量主要分为三种:本地变量、环境变量和位置变量本地变量本地变量是...

  • 变量及检测数据类型

    变量定义var 变量名 = 变量值; 先定义在赋值var 变量名; 变量名 = 变量值; 定义多个变量var 变量...

  • Java学习笔记-1.4.2变量的分类

    变量的分类 从整体上可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量 局部变量、成员变量、静态变量的区...

网友评论

      本文标题:变量

      本文链接:https://www.haomeiwen.com/subject/derhoktx.html