Lua学习四----------Lua变量
© 版权声明:本文为博主原创文章,转载请注明出处
1.Lua变量
- 变量在使用前,必须在代码中进行声明,即创建该变量
- 编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值
- Lua变量有三种类型:全局变量、局部变量、表中的域
- Lua中的变量全是全局变量,哪怕是语句块或是函数里,除非用local显示声明为局部变量
- 局部变量的作用域从声明位置开始到所在语句块结束。
- 变量的默认值为nil
2.赋值语句
- 赋值是改变一个变量的值和改变表域的最基本的方法
- Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量
- 遇到赋值语句Lua会先计算右边的所有的值然后再执行赋值操作,可以依此进行交互变量的值
- 当变量个数和值的个数不一致时
a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
- 尽可能的多使用局部变量
a. 避免命名冲突
b. 访问局部变量的速度比全局变量更快
3.索引
- 对table的索引使用方括号[],也可以使用.
4.variable.lua
a = 5 -- 全局变量
local b = 10 -- 局部变量,不在语句块或函数中,作用域从这里到文件结束 function joke()
c = 15 -- 全局变量,虽然在函数中,但是没有用local显示声明,所以为全局变量
local d = 20 -- 局部变量,只在joke()函数中有效,joke
print("local d = " .. d)
end local e -- 默认值为nil joke() print("a = " .. a)
print("b = " .. b)
print("c = " .. c)
print("d = ", d) -- .. 只能连接字符串,连接nil会报错
print("e = ", e) x, y = "a", "b" -- 多个变量同时赋值
print("x = " .. x .. " , y = " .. y) x, y = y, x -- 交换变量值
print("x = " .. x .. " , y = " .. y) u, v, w = "1", "2" -- 变量个数 > 值的个数,按变量个数补足nil
print("u = " .. u .. " , v = " .. v .. " , w = ", w) q, w, s = "11", "22", "33", "44"-- 变量个数 < 值的个数,忽略多余的值
print("q = " .. q .. " , w = " .. w .. " , s = " .. s) tab = {key = "value"}
print("tab.key = " .. tab.key) -- 使用.引用索引值
5.效果预览

参考:http://www.runoob.com/lua/lua-variables.html
Lua学习四----------Lua变量的更多相关文章
- Lua学习---编译生成lua和luac
众所周知,Lua是一种强大的脚本语言,并且这种语言是用C语言实现的.为什么要学习这门语言?因为它可以增强我看C语言代码的功底. 我下的Lua版本是Lua5.3,关于Lua5.3的简介如下: http: ...
- Lua学习2 Lua小框架的搭建
看了上一篇Lua环境搭建具体http://blog.csdn.net/liuwumiyuhuiping/article/details/9196435 为了方便学习. 具体新开始搭建一下学习的小框架. ...
- Lua学习十一----------Lua迭代器
© 版权声明:本文为博主原创文章,转载请注明出处 Lua迭代器 - 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址 - Lu ...
- Lua学习三----------Lua数据类型
© 版权声明:本文为博主原创文章,转载请注明出处 Lua数据类型 - Lua是动态类型语言,不需要为变量定义类型,只需要为变量赋值 - Lua有8中基本数据类型:nil.boolean.number. ...
- Lua学习二----------Lua的基本语法
© 版权声明:本文为博主原创文章,转载请注明出处 Lua基本语法: 1.--表示单行注释 2.--[[--]]表示多行注释 3.Lua区分大小写 4.Lua中变量默认是全局变量,除非用local显式声 ...
- lua学习:lua中“类”的实现
在之前的面试遇到考用lua实现类的题目.现在就补补这块知识点. 我们都知道Lua中的table是一个对象.拥有状态,拥有self,拥有独立于创建者和创建地的生命周期. 一个类就是一个创建对象的模具.L ...
- Lua学习十----------Lua数组
© 版权声明:本文为博主原创文章,转载请注明出处 1.LUA数组 - 一维数组 - 多维数组 2.array.lua -- 一维数组 print("一维数组") array1 = ...
- Lua学习九----------Lua字符串
© 版权声明:本文为博主原创文章,转载请注明出处 1.Lua字符串 - ''单引号间的一串字符 - ""双引号之间的一串字符 - [[]]之间的一串字符 2.Lua转义字符 3.字 ...
- Lua学习八----------Lua运算符
© 版权声明:本文为博主原创文章,转载请注明出处 1.Lua运算符: - 算术运算符:+(加法).-(减法).*(乘法)./(除法-取整).%(除法-取余).^(乘幂).-(负号) - 关系运算符:= ...
随机推荐
- [暑假集训--数论]poj1061 青蛙的约会
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...
- bzoj 4310 跳蚤 二分答案+后缀数组/后缀树
题目大意 给定\(k\)和长度\(\le10^5\)的串S 把串分成不超过\(k\)个子串,然后对于每个子串\(s\),他会从\(s\)的所有子串中选择字典序最大的那一个,并在选出来的\(k\)个子串 ...
- Treblecross(uva 10561)
题意:一个 1 × n 的棋盘,有 X 和 :,当棋盘上出现三个连续的X 时游戏结束,两人轮流操作,每次能把一个 : 变成 X,问先手必胜方案数以及先手可以放的位置. /* 对于先手,当有一个'X'时 ...
- 关于main函数的参数
#include <stdio.h> int main(int argc, char const *argv[]) { int i; for ( i = 0; i < argc; i ...
- LeetCode OJ-- Remove Nth Node From End of List
https://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/ remove倒数第n个节点 一般list remove node的 ...
- Topcoder SRM 663 DIV 1
ABBADiv1 题意: 规定两种操作,一种是在字符串的末尾添加A,另一种是在末尾添加B然后反转字符串.现在给你一个起始串,一个终点串,然后问你是否能够通过以上两种操作,从起始串变为终点串. 题解: ...
- java 两个int类型的数据相除并输出百分号保留两位有效数字
java代码: public void IntA(int a , int b){ //首先判断分母不能为0 if(b!=0){ folat num = (float) a*100/b; Decimal ...
- 2016北京集训测试赛(六)Problem A: 冒泡排序
Solution 观察冒泡排序的过程. 我们注意到, 每一轮的排序都会使得每个数后面比它小的数的个数减\(1\). 我们用\(f(n, m)\)表示对\(1\)到\(n\)的一个排列进行冒泡排序, 满 ...
- Aria2使用教程
Aria2 是一个轻量级多协议和多源命令行下载实用工具.它支持 HTTP / HTTPS, FTP, SFTP, bt 和 Metalink.通过内置 Aria2 可以操作 json - rpc 和 ...
- Fresco对Listview等快速滑动时停止加载
Fresco中在listview之类的快速滑动时停止加载,滑动停止后恢复加载: 1.设置图片请求是否开启 // 暂停图片请求 public static void imagePause() { Fre ...