一,Lua变量

 
1.lua变量的三种类型:全局变量,局部变量,表中的域
Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。
局部变量的作用域为从声明位置开始到所在语句块结束。
变量的默认值均为 nil。
 
如: a=5 -- 全局变量
local b = 5 --局部变量
在函数里:
function demo()
c = 5 --全局变量
local d = 5 -- 局部变量
 
2.变量赋值
a = "hello".."world"
b = 1
。。。。
 
Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
a, b = 10, 2 <--> a=10; b=2
 
遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:
 
x, y = y, x 交换赋值 -- swap 'x' for 'y'
 
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
1. 变量个数 > 值的个数 按变量个数补足nil 2. 变量个数 < 值的个数 多余的值会被忽略
 
如: a, b, c = 0, 1 print(a,b,c) --> 0 1 nil
 
a, b = 1,2, 3 -- 3将被忽略 print(a,b) --> 1 2
多值赋值经常用来交换变量,或将函数调用返回给变量:
a, b = function()
f()返回两个值,第一个赋给a,第二个赋给b。
应该尽可能的使用局部变量,有两个好处:
1. 避免命名冲突。
2. 访问局部变量的速度比全局变量更快。
 

二,循环

1.while循环: 在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。
语法: while(condition) do statements end
如:
a=10 while( a < 20 ) do print("a 的值为:", a) a = a+1 end
 
2.for循环: 重复执行指定语句,重复次数可在 for 语句中控制。
(1).一般for循环
语法:
for var=exp1,exp2,exp3 do <执行体> end
var从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次"执行体"。exp3是可选的,如果不指定,默认为1。
function f(x) print("function") return x*2 end for i=1,f(5) do print(i) end
 
(2).泛型for循环
语法: for i,v in ipairs(a)     do print(v) end
i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组。
pairs 用来迭代字符数组。
 
3.repeat...until循环
语法:
repeat statements until( condition )
--[ 变量定义 --] a = 10 --[ 执行循环 --] repeat print("a的值为:", a) a = a + 1 until( a > 15 )
循环条件判断语句(condition)在循环体末尾部分,所以在条件进行判断前循环体都会执行一次。
 
4.循环嵌套
(1).Lua 编程语言中 for 循环嵌套语法格式:
for init,max/min value, increment do for init,max/min value, increment do statements end statem ents end
 
(2).Lua 编程语言中 while 循环嵌套语法格式:
while(condition) do while(condition) do statements end statements end
 
(3).Lua 编程语言中 repeat...until 循环嵌套语法格式:
repeat statements repeat statements until( condition ) until( condition )
 
 
5.无线循环,俗称死循环,以while为列:
while( true ) do print("循环将永远执行下去") end
 

三,流程控制

 
1.if
控制结构的条件表达式结果可以是任何值,Lua认为false和nil为假,true和非nil为真。
语法:
(1).if
if(布尔表达式) then --[ 布尔表达式为 true 时执行该语句块 --] end
 
(2)if-else
if(布尔表达式) then --[ 布尔表达式为 true 时执行该语句块 --] else --[ 布尔表达式为 false 时执行该语句块 --] end
(3) if-else-if-else
if( 布尔表达式 1) then --[ 在布尔表达式 1 为 true 时执行该语句块 --] elseif( 布尔表达式 2) then --[ 在布尔表达式 2 为 true 时执行该语句块 --] elseif( 布尔表达式 3) then --[ 在布尔表达式 3 为 true 时执行该语句块 --] else --[ 如果以上布尔表达式都不为 true 则执行该语句块 --] end
 
 
 
 
 
 
 
 
 
 
 

lua基础学习(二)的更多相关文章

  1. Python入门基础学习 二

    Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...

  2. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  3. Go基础学习(二)

    数组[array] 数组定义[定义后长度不可变] 12 symbol := [...]string{USD: "$", EUR: "€", GBP: " ...

  4. Django基础学习二

    今天继续学习django的基础 学习用户提交url如何获得返回值 1.首先需要在工程的urls文件定义指定的urls要路由给哪个函数 在这个例子中,我们定义home的urls路由给views里的tes ...

  5. salesforce lightning零基础学习(二) lightning 知识简单介绍----lightning事件驱动模型

    看此篇博客前或者后,看一下trailhead可以加深印象以及理解的更好:https://trailhead.salesforce.com/modules/lex_dev_lc_basics 做过cla ...

  6. CSS入门基础学习二

    我们下午继续学习CSS的入门基础,搬上你的小板凳赶快进入吧! 一.背景(background) Background-color:背景颜色 background-image (背景图片) backgr ...

  7. WebService基础学习(二)—三要素

    一.Java中WebService规范      JAVA 中共有三种WebService 规范,分别是JAX-WS.JAX-RS.JAXM&SAAJ(废弃).   1.JAX-WS规范    ...

  8. jQuery基础学习(二)—jQuery选择器

    一.jQuery基本选择器 1.CSS选择器     在学习jQuery选择器之前,先介绍一下之前学过的CSS选择器. 选择器 语法 描述 示例   标签选择器 E {                 ...

  9. HTML基础学习(二)—CSS

    一.CSS概述     CSS(Cascading Stytle Sheets)层叠样式表,用来定义网页的显示效果.可以解决HTNL代码对样式定义的重复,提高了后期样式代码的可维护性,并增强了网页的显 ...

随机推荐

  1. k8spod资源的基础管理操作

    pod是k8s api中的核心资源类型,它可以定义在json或yaml格式的资源清单中,由资源管理命令进行陈述式或声明式管理.创建时,用户可通过create或apply命令将请求提交到apiserve ...

  2. Acwing-278-数字组合(背包)

    链接: https://www.acwing.com/problem/content/280/ 题意: 给定N个正整数A1,A2,-,AN,从中选出若干个数,使它们的和为M,求有多少种选择方案. 思路 ...

  3. C# WinForm捕获全局异常(捕获未处理的异常)

    static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static vo ...

  4. 使用Eclipse Memory Analyzer Tool(MAT)分析故障

    Eclipse Memory Analyzer Tool(MAT)是一个强大的基于Eclipse的内存分析工具,可以帮助我们找到内存泄露,减少内存消耗. 工作中经常会遇到一些内存溢出.内存泄露等问题, ...

  5. redis string类型设置过期时间后 再进行set操作,会清除过期时间

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_41756437/article/d ...

  6. Idea 项目jdk环境配置

    1.先配置jdk环境变量

  7. [大数据] hadoop伪分布式安装

    注意:节点主机的hostname不要带"_"等字符,否则会报错. 一.安装jdk rpm -i jdk-7u80-linux-x64.rpm 配置java环境变量: vi + /e ...

  8. matplotlib中plt.scatter()参数详解

    scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, l ...

  9. ABP core2.2错误笔记,持续更新

    注:以下问题全部基于版本 © 2019 MLCDZ. Version 4.3.0.0 [20190830]  .net core 的版本为2.2 1.System.InvalidOperationEx ...

  10. python 中字符串转 二进制 /ASCII码