lua脚本语言学习

  • 单行注释:–
  • 多行注释:–[[ 多行注释 --]]
  • 标识符区分大小写
  • 在默认情况下,变量总是认为是全局的。全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。 如果你想删除一个全局变量,只需要将变量赋值为nil。 当且仅当一个变量不等于nil时,这个变量即存在。
数据类型 描述
nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean 包含两个值:false和true。
number 表示双精度类型的实浮点数(对比C中的double)
string 字符串由一对双引号或单引号来表示,用2个方括号“[[]]”来表示“一块”字符串
function 由 C 或 Lua 编写的函数
userdata 表示任意存储在变量中的C数据结构
thread 表示执行的独立线路,用于执行协同程序
table Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。
  • 可以使用type函数测试给定变量或者值的类型
  • 字符串连接用的是 “…” 。对一个数字字符串进行算数操作时,lua会将这个数字字符转成一个数字
  • “#”放在字符串前面,用来计算字符串的长度。
  • 划重点了,lua语言的表的默认初始索引一般以1开始
  • 在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
  • Lua 变量有三种类型:全局变量、局部变量、表中的域。Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。变量的默认值均为 nil。
  • Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。 遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作。 当变量个数和值的个数不一致时:
a. 变量个数 > 值的个数             按变量个数补足nil
b. 变量个数 < 值的个数             多余的值会被忽略
  • 循环

    • while

      a = 10
      while(a < 20)
      doprint(a)a = a + 1
      end
      
    • 数组for( var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 “执行体”。exp3 是可选的,如果不指定,默认为1。 )

      for i=10,1,-1 doprint(i)
      end
      
    • 泛型for( i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组。 )

    --打印数组a的所有值
    a = {"one", "two", "three"}
    for i, v in ipairs(a) doprint(i, v)
    end
    
    • repeat … until。循环总会执行一次
    --[ 变量定义 --]
    a = 10
    --[ 执行循环 --]
    repeatprint("a的值为:", a)a = a + 1
    until( a > 15 )
    
  • 流程控制

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

    • 多返回值、可变参数(…)
    optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)function_bodyreturn result_params_comma_separated
    end
    
  • 算数运算符(+、-、*、/、%、^)

  • 关系运算符(==、~=、>、<、>=、<=)

  • 逻辑运算符(and、or、not)

  • 其他运算符(…(连接两个字符串)、#(一元运算符,返回字符串或表的长度))

  • Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。Lua table 是不固定大小的,你可以根据自己需要进行扩容。

  • Lua提供了一个名为require的函数用来加载模块 。

require("<模块名>") 或者 require "<模块名>"
  • 文件I/O,分为简单模式、完全模式。简单模式和C差不多,完全模式使用外部的文件句柄来实现,它以一种面向对象的方式,将所有的文件操作定义为文件句柄的方法。

lua脚本语言学习(一)相关推荐

  1. Lua脚本语言学习总结 入门、复习Lua语言看这一篇就够了

    文章目录 Lua 概念 特性 应用场景 Lua的安装 Lua的语法 第一个Lua程序 Lua的注释 标识符 关键字 运算符 全局变量&局部变量 Lua数据类型 nil boolean numb ...

  2. 游戏开发学习笔记——lua脚本语言——安装、汉化与小测试(解决lua运行代码乱码问题)

    游戏开发学习笔记--lua脚本语言--安装.汉化与小测试 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: Lua 是一种轻量小巧的脚本语言,用 ...

  3. java lua脚本_请问该如何在Java中使用Lua脚本语言?

    如何在Java中使用Lua脚本语言是本文要介绍的内容,主要是来学习LUA脚本语言在JAVA中如何来使用,Lua就不说了, 现在比较热门, 语法也很简单. 为了在Java中调用, 折腾了比较长的时间, ...

  4. fceux源码解析_FCEUX金手指加强版 - 使用Lua脚本语言编写FC/NES金手指脚本

    一直觉得大部分的FC/NES模拟器的作弊码金手指不是那么方便使用, 比如魂斗罗1代, 玩家的武器可以通过修改0xAA的值来改变: 0x11为M弹(重机枪),0x12为F弹(圈圈),0x13为S弹(散弹 ...

  5. java lua_请问该如何在Java中使用Lua脚本语言?

    大话西游666 如何在Java中使用Lua脚本语言是本文要介绍的内容,主要是来学习LUA脚本语言在JAVA中如何来使用,Lua就不说了, 现在比较热门, 语法也很简单. 为了在Java中调用, 折腾了 ...

  6. java lua_如何在Java中使用Lua脚本语言

    展开全部 如何在Java中使用Lua脚本语言是本文要介32313133353236313431303231363533e59b9ee7ad9431333335343933绍的内容,主要是来学习LUA脚 ...

  7. 游戏中使用LUA脚本语言的简介

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 我们知道 ...

  8. (三)Lua脚本语言入门

    又要找工作了,变的忧虑了,唯有学习才让内心变得踏实,今天玩了一下午的王者荣耀,正事都忘了...... 如果认为所谓的毅力是每分每秒的"艰苦忍耐"式的奋斗,那这是一种很不足的心理状态 ...

  9. Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言)

    http://www.lupaworld.com/action-viewstutorial-itemid-10105.html Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言) 文章来源于htt ...

  10. 【转】Lua脚本语言入门

    Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言)(中文)-zt 作者: 沐枫 Lua 程序设计初步 作者: 沐枫 (第二人生成员) 版权所有转载请注明原出处 在这篇文章中,我想向大家介绍如何进行 ...

最新文章

  1. c 普通的文本变成注释文本的快捷键_2019年IntelliJ IDEA快捷键终极大全,绝版!速度收藏!...
  2. android 调用手机震动
  3. 风险度量之[下行风险]
  4. Windows下MySQL下载安装、配置与使用
  5. git 如何清理操作日志_git如何清空所有的commit记录
  6. kafka如何彻底删除topic及数据
  7. 服务器监控工具_8款服务器和应用性能监控工具
  8. 如何使用Visual Studio无需成本即可实现连续集成
  9. 水晶报表如何查看sql_amazon自动广告如何查看报表?怎么知道亚马逊的自然流量和广告流量分别是多少?...
  10. VR 、AR 谁让你眼前一亮
  11. mysql qps 索引查询_mysql QPS 抓取和分析
  12. 服务器安全防护措施有哪些?
  13. C51单片机烧录器使用(USB转TTL)
  14. Markdown——图片、文字显示居中的一种方法
  15. Vue项目生成二维码
  16. ffmpeg Intel硬件加速总结
  17. Cesium 获取当前屏幕范围内的中心点以及相机姿态
  18. SpringAop篇 (2) Spring中的切面编程技术 AspectJ
  19. 简单说说rebuttal
  20. 解决Vivado HLS 高层综合失败

热门文章

  1. Java进阶:SpringMVC中获取web.xml中的全局参数
  2. 南昌大学c语言程序设计,南昌大学C语言程序设计试卷C语言2.doc
  3. linux进程管理概念,Linux教程之进程的概念和进程管理命令的使用
  4. eclipse java 报错信息_解决Eclipse启动时报Initializing Java Tooling异常信息
  5. Spring Boot 中统一异常处理最佳实践介绍
  6. 第一次学会!=EOF
  7. 剑指前端(前端入门笔记系列)——Date对象
  8. 聚类-----KMeans
  9. Oracle递归查询所有树结构,并确定其中的一条分支
  10. 《构建之法》第四章读后感--软件工程