学习笔记:Lua语法入门(一)基本语法&数据类型

一,基本语法&数据类型

1.hello world

print("Hello World!")

在这里插入图片描述

2.注释

–注释
–[[多行注释]]
在这里插入图片描述

3.标识符

用于定义一个变量,函数获取其他用户定义的项
字母或是下划线开头

a = 1
print(a)

4.关键字

一共就这么多

andbreakdoelse
elseifendfalsefor
functionifinlocal
nilnotorrepeat
returnthentrueuntil
whilegoto

5.变量

默认定义为全局变量
只有定义的变量前面加local,为局部变量

print("*************变量***********")
print(b)--nil
b = 10
print(b)--10
fun = function ()
    b = b-1
    local c = "cc"
end
fun()
print(b)--9
print(c)--nil

在这里插入图片描述

6.数据类型

取自菜鸟教程

数据类型描述
nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean包含两个值:false和true。
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示
function由 C 或 Lua 编写的函数
userdata表示任意存储在变量中的C数据结构
thread表示执行的独立线路,用于执行协同程序
tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

一些注意事项:

Number:Lua中所有数字都是number类型
nil:如果给全局变量或者 table 表里的变量赋一个 nil 值,相当于删除该变量
booleanLua 把 false 和 nil 看作是 false,其他的都为 true
string:单引号或是双引号都可以表示string

string1 = "this is string1"
string2 = 'this is string2'

双括号可以表示换行的字符串[[]]
table:默认索引从1开始,还有一些#table的很坑的地方要注意
表的遍历:

tbl = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tbl) do
    print("Key", key)
end

打印结果

Key    1
Key    2
Key    3
Key    4

7.function 方法/函数

函数可以存在变量中

fun=function ()--等价于 function fun()
    tt = "123123"    
end

fun()
print(tt)--123123

8.thread 线程

在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。

线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。

fun = function ()
    print(123)    
end

co = coroutine.create(fun)--创建协程
--协程的本质是一个线程对象
print(co)--打印结果:thread:地址
coroutine.resume(co)--执行协程 对应create创建协程,打印结果:123
fun2 = function ()
    local i = 1
    while true do 
        print(i)
        i = i +1
        --协程挂起
        coroutine.yield(111) --yield可以带返回值
    end   
end

co3 = coroutine.create(fun2)
a,b = coroutine.resume(co3)
print(a,b)
a,b =coroutine.resume(co3)
print(a,b)
a,b =coroutine.resume(co3)
print(a,b)

打印结果:
在这里插入图片描述
即,a为协程是否挂起成功,b为 coroutine.yield(111) 的参数111

9.userdata(自定义类型)

用户自定义数据,通常是 struct 和 指针存储到 Lua 变量中调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值