lua基础学习(一)

设计目的:

为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
 
特性:
1.编译以后仅仅100k,能够很方便嵌入别的程序里。
2.可扩张性,Lua提供了很是易于使用的扩展接口和机制:由宿主语言(一般是C或C++)提供这些功能,Lua可使用它们,就像是原本就内置的功能同样。
Lua 应用场景
  • 游戏开发
  • 独立应用脚本
  • Web 应用脚本
  • 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench
  • 安全系统,如入侵检测系统

标示符

Lua 标示符用于定义一个变量,函数获取其余用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。
最好不要使用下划线加大写字母的标示符,由于Lua的保留字也是这样的。
Lua 不容许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。所以在 Lua 中 Runoob 与 runoob 是两个不一样的标示符
 

注释:

单行注释 --
多行注释 --[[ 多行注释 多行注释 --]]
取消多行注释 在前面加一个-
 
 

lua的数据类型

1.nil 只有值nio属于这类,表示一个无效值。至关于条件表达式false,nil有一个删除的做用,经过给变量赋值为nil,等用于把这个变量删除。nil与被type()函数转换的值作比较的是否需加上"" 如 x = nil type(x)=="nil",由于type(X) == String
2.Boolean 包含两个值true/false
3.number 表示双精度类型的实浮点数。如: 1,2.2等
4.字符串由一对双引号或单引号来表示,也能够用[[]]来表示,执行字符串计算时,lua尝试将这个数字字符串转成一个数字,不能转换将报错。字符串链接用.. 如 print("123".."456"),用#计算字符串的长度,如 print(#("abc"))
5.function 由C或lua编写的函数,函数给赋给变量 如: function a{} b = a; 能够匿名的方式传递如: function testFun(tab,fun)     for k ,v in pairs(tab) do         print(fun(k,v));     end end tab={key1="val1",key2="val2"}; testFun(tab, function(key,val)--匿名函数     return key.."="..val; end );
6.userdata表示任意存储在变量中的C数据结构。userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所建立的类型,能够将任意 C/C++ 的任意数据类型的数据(一般是 struct 和 指针)存储到 Lua 变量中调用。
7.thread 表示执行的独立线程,用于执行协同程序。在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差很少,拥有本身独立的栈、局部变量和指令指针,能够跟其余协同程序共享全局变量和其余大部分东西。
线程跟协程的区别:线程能够同时多个运行,而协程任意时刻只能运行一个,而且处于运行状态的协程只有被挂起(suspend)时才会暂停。
8.table lua的表实际上是一个关联数组,数据的索引多是字符串或者是数字,在lua里,table的建立是经过"构建表达式"来完成,最简单的构造表达式是{},用来建立一个空表。
若是不指定,默认的key 从1开始。如:
local tbl = {"apple", "pear", "orange", "grape"} for key, val in pairs(tbl) do print("Key", key) end
脚本执行结果为: Key    1 Key    2 Key    3 Key    4
对 table 的索引使用方括号 []。Lua 也提供了 . 操做。
t[i] t.i 如: tab{a="abc"} tab.a -- 当索引为字符串类型时的一种简化写法
相关文章
相关标签/搜索