Lua基础
来源:互联网 发布:机器视觉定位算法 编辑:程序博客网 时间:2024/06/09 18:43
1、交互式编程
Lua 提供了交互式编程模式。我们可以在命令行中输入程序并立即查看效果。
Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:
$ lua -i $ Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio>
在命令行中,输入以下命令:
> print("Hello World!")
注:lua -e "print('XXX')" :代表执行引号里面的
lua -l:用于加载库文件
2、注释
单行注释
两个减号是单行注释:
--
多行注释
--[[ 多行注释 多行注释 --]]
3、标示符
Lua 表示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。(只由字母、下划线、数字组成,以字母或下划线开头)
最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。
Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。因此在 Lua 中 W3c 与 w3c 是两个不同的标示符。以下列出了一些正确的标示符:
mohd zara abc move_name a_123myname50 _temp j a23b9 retVal
4、Lua 数据类型
Lua是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。
Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread、table。
我们可以使用type函数测试给定变量或者值的类型:
print(type("Hello world")) --> stringprint(type(10.4*3)) --> numberprint(type(print)) --> functionprint(type(type)) --> functionprint(type(true)) --> booleanprint(type(nil)) --> nilprint(type(type(X))) --> string
5、Lua 变量
变量在使用前,必须在代码中进行声明,即创建该变量(变量没有类型,只有值才有类型)。
编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。
Lua 变量有三种类型:全局变量、局部变量、表中的域。
Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显示声明为局部变量。
局部变量的作用域为从声明位置开始到所在语句块结束。
变量的默认值均为 nil。
-- test.lua 文件脚本a = 5 -- 全局变量local b = 5 -- 局部变量 注意此时 此时输出为正常的5,5----------------------------------------------------------------function joke() c = 5 -- 全局变量 local d = 6 -- 局部变量endjoke()print(c,d) --> 5 nil 注意此时-------------------------------------------------------------------do local a = 6 -- 局部变量 b = 6 -- 全局变量 print(a,b); --> 6 6endprint(a,b) --> 5 6 注意此时
6、赋值语句和索引
赋值是改变一个变量的值和改变表域的最基本的方法。
a = "hello" .. "world" --> helloworldprint("hello".."lua") --> hello lua //注意二者区别,中间空格
遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:
x, y = y, x -- swap 'x' for 'y'a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[j]'
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
a. 变量个数 > 值的个数 按变量个数补足nilb. 变量个数 < 值的个数 多余的值会被忽略
例如:
a, b, c = 0, 1print(a,b,c) --> 0 1 nil a, b = a+1, b+1, b+2 -- value of b+2 is ignoredprint(a,b) --> 1 2 a, b, c = 0print(a,b,c) --> 0 nil nil
上面最后一个例子是一个常见的错误情况,注意:如果要对多个变量赋值必须依次对每个变量赋值。
a, b, c = 0, 0, 0print(a,b,c) --> 0 0 0
多值赋值经常用来交换变量,或将函数调用返回给变量:
a, b = f()
f()返回两个值,第一个赋给a,第二个赋给b。
应该尽可能的使用局部变量,有两个好处:
- 1. 避免命名冲突。
- 2. 访问局部变量的速度比全局变量更快。
7、 索引
对 table 的索引使用方括号 []。Lua 也提供了 . 操作。
t[i]t.i -- 当索引为字符串类型时的一种简化写法gettable_event(t,i) -- 采用索引访问本质上是一个类似这样的函数调用
例如:
> site = {}> site["key"] = "www.w3cschool.cc"> print(site["key"]) //此两种输出方式等价> print(site.key)--www.w3cschool.cc
- Lua基础 初识Lua
- LUA基础
- Lua 基础
- Lua 基础
- lua基础
- lua基础
- lua基础
- lua基础
- lua基础
- Lua基础
- lua基础
- Lua基础
- Lua基础
- Lua基础
- lua基础
- Lua基础
- lua基础
- Lua基础
- 5个关键词看小程序和App的UI设计异同
- Html js实现倒计时效果参考代码
- 使用define宏定义的小技巧
- H5页面移动端的社会化分享
- Windows7+VS2010下OpenCV环境配置
- Lua基础
- 关于spring @ModelAttribute注解接收json数据的几点
- JAVA的多线程(详细理解)【转】
- 获取焦点元素
- 加密解密算法java实现(2)—DES
- MYSQL的用户变量(@)和系统变量(@@)
- 必须知道的app测试与web测试的区别
- Go语言备注2
- 初识PHP(13)