lua从入门到放弃(四):变量

lua变量

变量在使用前,必须显式地声明变量,即创建该变量.
编译程序在执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值.
lua变量有三种类型:全局变量,局部变量,表中的域.
lua中的变量全是全局变量,哪怕是语句块和函数里,除非显式地用local声明为局部变量.
局部变量的作用域为从声明位置开始到所在语句块结束.
变量的默认值均为nil.

a = 6
local b = 12
function cd()
        c = 7
        local d = 14
end
cd()
print(a) ---全局变量 6
print(b) ---局部变量 12 
print(c) ---全局变量 7
print(d) ---局部变量 nil

在这里插入图片描述

赋值语句

赋值是改变一个变量的值和表域的最基本的方法

[root@iZ2zeg7wauly0hl9qmxvwlZ lua]# lua
Lua 5.3.0  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> a = 'hello'..'world'
> print(a)
helloworld
>

lua可以对多个变量同时赋值,变量列表和值列表的各个元素以逗号分开,赋值语句右边的值分别赋给左边的变量

[root@iZ2zeg7wauly0hl9qmxvwlZ lua]# lua
Lua 5.3.0  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> a,b=10,20
> print(a,b)
10      20
>

遇到赋值语句lua会先计算右边的值然后再进行赋值操作,所以可以这样交换变量的值

[root@iZ2zeg7wauly0hl9qmxvwlZ lua]# lua
Lua 5.3.0  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> a,b=10,20
> a,b=b,a
> print(a,b)
20      10
>

当变量个数和值的个数不一致时,lua会以变量的个数为基础采取一下策略

变量个数>值个数     按变量个数补足nil
变量个数<值个数     多余的值会被忽略
[root@iZ2zeg7wauly0hl9qmxvwlZ lua]# lua
Lua 5.3.0  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> a,b,c=1,2
> print(a,b,c)
1       2       nil
> a,b=2,4,6
> print(a,b)
2       4
>

多值赋值经常用来变量交换或将函数的调用结果返回给变量

a,b=f()

函数f返回两个值,一个给a,一个给b
应该尽量使用局部变量,这有两个好处:

  1. 避免命名冲突
  2. 访问局部变量比全局变量要快

索引

对table的索引使用方括号,lua也提供了.操作

t[i]
t.i                 -- 当索引为字符串类型时的一种简化写法
gettable_event(t,i) -- 采用索引访问本质上是一个类似这样的函数调用
[root@iZ2zeg7wauly0hl9qmxvwlZ lua]# lua
Lua 5.3.0  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> a={}
> a['key']='value'
> print(a['key'])
value
> print(a.key)
value
>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值