学习LUA的一些小笔记

1.  lua的数据类型:
nil(表示一个无效值),
boolean,number(数字都是number类型的,双精度的实浮点数),
string(字符串由一对双引号或单引号来表示,可以使用#来计算字符串长度,中文字符占2个字节),
function(方法),
userdata(自定义数据类型,数据结构),
thread(线程,独立执行的线路,用于执行协同程序,),
table(表,可以写成类,默认索引是1)


2.   ..是lua中的字符串连接符,当在一个数字后面写..时必须加上空格以防被解释错

3.  lua变量有三种类型:全局变量,局部变量(local),表中的域

4.  table的索引 a[12],a['sss'],(x=12,a[x]),a.kk,

5.  循环
while(条件语句)
do
  执行语句
end

for i=x,y,z do  //z是可选可不选,不选默认为1
执行语句
end

a={1,2,3}
for i,v in ipairs(a)do
执行语句
end

repeat //先执行一次,再判断
执行语句
until (判断语句)


6.  goto  Label(标签)
标签的格式为 ::Label::
local a = 1
::label:: print("--- goto label ---")

a = a+1
if a < 3 then
    goto label   -- a 小于 3 的时候跳转到标签 label
end

7. 条件语句(lua认为false和nil为假)
 if(布尔表达式)then
执行语句
end

if(布尔表达式)
then
执行语句
else
执行语句
end

if(布尔表达式)
then
执行语句
elseif(布尔表达式)
then
执行语句
end

8.  函数,多返回值,可变参数(Lua 函数可以接受可变数目的参数,和 C 语言类似,在函数参数列表中使用三点 ... 表示函数有可变的参数。)
function AA(x,y,z....)
执行语句
end

9.  lua运算符  
算术运算符  
+  -  * / % ^ -
关系运算符
==  ~=  <  >  <=  >=  
逻辑运算符
and  or  not
其他运算符    ..  连接两个字符串    #返回字符串或者表的长度


10.  Lua字符串,字符串或串(String)是由数字、字母、下划线组成的一串字符。

    单引号间的一串字符。
    双引号间的一串字符。
    [[ 与 ]] 间的一串字符。

转义字符  \a  \n.......

字符串操作   string.upper  string.lower  ......


11.  数组
数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。
Lua 数组的索引键值可以使用整数表示,数组的大小不是固定的。

12. 迭代器
迭代器是一种对象,能够用来遍历元素,每个迭代器对象代表容器中的准确地址。
在 Lua 中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。
for k, v in pairs(t) do
    print(k, v)
end
使用了 Lua 默认提供的迭代函数 ipairs

13.table(表)
table是lua的一种数据结构用来帮助我们创建不同的数据类型如数组字典等
table操作常用的方法:table.concat(table [, sep [, start [, end]]]),列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。
table.insert(table, [pos,] value)
table.remove (table [, pos])
table.sort (table [, comp])

14.lua模块与包
模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。Lua 的模块是由变量、函数等已知元素组成的 table

Lua提供了一个名为require的函数用来加载模块。要加载一个模块,只需要简单地调用就可以了。例如:
require("<模块名>")或者rrequire “<模块名>”

15.Metatable(元表)  允许我们改变table的行为,每个行为关联了对应的元方法。
有两个很重要的函数来处理元表:
    setmetatable(table,metatable): 对指定 table 设置元表(metatable),如果元表(metatable)中存在 __metatable 键值,setmetatable 会失败。
    getmetatable(table): 返回对象的元表(metatable)。

mytable = {}                          -- 普通表
mymetatable = {}                      -- 元表
setmetatable(mytable,mymetatable)  

或者mytable = setmetatable({},{})


 _index元方法
mytable = setmetatable({key1 = "value1"}, {
  __index = function(mytable, key)
    if key == "key2" then
      return "metatablevalue"
    else
      return nil
    end
  end
})

Lua 查找一个表元素时的规则,其实就是如下 3 个步骤:

    1.在表中查找,如果找到,返回该元素,找不到则继续
    2.判断该表是否有元表,如果没有元表,返回 nil,有元表则继续。
    3.判断元表有没有 __index 方法,如果 __index 方法为 nil,则返回 nil;如果 __index 方法是一个表,则重复 1、2、3;如果 __index 方法是一个函数,则返回该函数的返回值。


16.    lua协同程序
Lua 协同程序(coroutine)与线程比较类似
线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。

在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确的被要求挂起的时候才会被挂起。

协同程序有点类似同步的多线程,在等待同一个线程锁的几个线程有点类似协同。

coroutine.create()创建 coroutine,返回 coroutine, 参数是一个函数,当和 resume 配合使用的时候就唤醒函数调用
coroutine.resume()(重启coroutine)
coroutine.yield()(挂起coroutine)

17.    lua文件I/O
Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。
file = io.open (filename [, mode])

简单模式
-- 以只读方式打开文件
file = io.open("test.lua", "r")
-- 设置默认输入文件为 test.lua
io.input(file)
-- 输出文件第一行
print(io.read())
-- 关闭打开的文件
io.close(file)
-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")
-- 设置默认输出文件为 test.lua
io.output(file)
-- 在文件最后一行添加 Lua 注释
io.write("--  test.lua 文件末尾注释")
-- 关闭打开的文件
io.close(file)

完全模式
-- 以只读方式打开文件
file = io.open("test.lua", "r")
-- 输出文件第一行
print(file:read())
-- 关闭打开的文件
file:close()
-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")
-- 在文件最后一行添加 Lua 注释
file:write("--test")
-- 关闭打开的文件
file:close()

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Redis全套学习笔记.pdf》是一本关于Redis数据库的学习笔记,内容涵盖了Redis的基本概念、原理、操作、应用等方面的知识。 首先,Redis是一种开源的内存数据库,它具有高性能、高可用性和高扩展性的特点。它可以用于缓存、消息队列、实时排行榜等场景,广泛应用于Web应用开发、大数据存储和分析等领域。 在学习笔记中,首先介绍了Redis的基本概念,包括数据结构、持久化、单线程架构等方面的知识。数据结构包括字符串、哈希表、列表、集合和有序集合等,笔记详细介绍了它们的特点和使用方法。持久化方面,介绍了RDB快照和AOF日志两种持久化方式的原理和使用方法。同时,笔记也解释了为什么Redis选择单线程架构以及如何充分利用单线程的优势。 其次,学习笔记还包括了Redis的常用操作,例如数据的增删改查、事务和管道操作、过期时间设置等。这些操作是使用Redis进行开发和使用时必不可少的知识点,通过学习笔记可以快速掌握这些操作的使用方法。 此外,学习笔记还涉及了Redis的高级应用,如发布订阅、Lua脚本、事件通知等。这些高级应用可以帮助开发者更好地利用Redis的功能和特性,提升系统的性能和稳定性。 综上所述,《Redis全套学习笔记.pdf》是一本全面介绍Redis的学习资料,通过学习这本笔记,读者可以了解Redis的基本概念和原理,掌握Redis的常用操作和高级应用,从而更好地使用Redis进行开发和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值