
Lua
文章平均质量分 79
鹅厂程序小哥
与你一起写程序 | 知乎:鹅厂程序小哥 | 微信公众号:鹅厂程序小哥
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Lua中的#
对字符串来说,#取字符串的长度,但对于table需要注意。lua的table可以用数字或字符串等作为key, #号得到的是用整数作为索引的最开始连续部分的大小, 如果t[1] == nil, 即使t[5], t[6], t[7]是存在的,#t仍然为零。对于这类tb[1],tb[2]....才能获取到正确的长度。local tab = {}tab[1] = 1tab[2] = 2tab[3] = nilprint(#tab)--结果为2如果table的第一个元素key为非数字,那么#t原创 2020-11-24 17:28:57 · 7099 阅读 · 0 评论 -
Lua的浅拷贝和深拷贝
浅拷贝在lua中,使用“=”进行浅拷贝,根据拷贝对象的不同,又分为两种情况:1.拷贝对象为string、number、boolean等基础类型时,拷贝的过程是进行复制粘贴。创建一个新的对象,拷贝出来的新对象和原来的对象互不影响,互不干涉,所以修改拷贝出来的对象的值不会影响到原来的对象的值!local value_A=10local value_B=value_Aprint("A的值:"..value_A)print("B的值:"..value_B)value_B=5print("A的原创 2020-11-20 14:19:32 · 2224 阅读 · 0 评论 -
Lua 截取中英混合的字符串
--返回截取的实际Indexfunction SubStringGetTrueIndex(str, index) local curIndex = 0 local i = 1 local lastCount = 1 repeat lastCount = SubStringGetByteCount(str, i) i = i + lastCount curIndex = curIndex + 1 until (curI.原创 2020-05-19 20:29:58 · 517 阅读 · 0 评论 -
Lua--pairs和ipairs遍历区别
Lua中Table的存储方式在看二者的区别之前,我们首先来看一下Lua中的table是如何在内存中进行分配的。Table的组成:1.哈希表 用来存储Key-Value 键值对,当哈希表上有冲突的时候,会通过链表的方式组织冲突元素2.数组 用来存储数据(包括数字,表等)print('test pairs and ipairs')local t ={ [1] = 1, ...原创 2020-04-21 16:21:38 · 2538 阅读 · 0 评论 -
lua获取数组的长度
获取数组的长度对于一个数组我们通常可以使用#来获取其长度tabletest = {1,2,3,5,7}print(#tabletest) ------》5使用这两种方法都能得到这个数组的长度,但是如果tabletest = {1,2,nil,3,5,7}print(#tabletest) ------》6tabletest = {1,nil,3,nil}print(...原创 2019-10-24 21:46:48 · 26801 阅读 · 0 评论 -
lua的table库中的常用函数总结
table是Lua语言中的一种重要的数据类型, table 的一些特性简单列举如下:(1) table 是一个“关联数组”,数组的索引可以是数字或者是字符串;(2) table 的默认初始索引一般以 1 开始;(3) table 的变量只是一个地址引用,对 table 的操作不会产生数据影响;(4) table 不会固定长度大小,有新数据插入时长度会自动增长;(5) table...原创 2019-09-06 11:15:54 · 870 阅读 · 0 评论 -
Lua学习笔记
1.注释--单行注释多行注释--[[--]]2.变量命名最好不要使用下划线加大写字母作为标示符,因为lua内部的保留字也是这样命名的。Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。3.全局变量默认情况下,变量总是全局的。局部变量使用local变量不需要声明,在赋值时会创建。访问一个没有...原创 2019-03-11 11:48:04 · 842 阅读 · 0 评论 -
【最详细易懂】C++和Lua交互总结
一、Lua与C++的交互机制——Lua堆栈Lua和C++ 的交互机制的基础在于Lua提供了一个虚拟栈,C++ 和Lua之间的所有类型的数据交换都通过这个栈完成。无论何时C++想从Lua中调用一个值,被请求的值将会被压入栈,无论何时C++想要传递一个值给Lua,首先将整个值压栈,然后就可以在Lua中调用。Lua中,对虚拟栈提供正向索引和反向索引两种索引方式,区别是:正数索引1永远表示栈底,...原创 2019-03-17 22:06:34 · 12545 阅读 · 6 评论 -
Lua和C++交互:Lua调用C++类注册生成的Lua模块
这篇文章,属于Lua和C++交互的子篇章。总篇章地址:https://blog.youkuaiyun.com/qq826364410/article/details/88624824Lua调用C++类注册生成的Lua模块①新建创建对象函数,调用lua_newuserdata,创建一个对象指针,指向new出来的新的对象。②新建成员方法,调用lua_touserdata,得到从lua中传入的对象...原创 2019-03-19 16:39:36 · 4548 阅读 · 0 评论 -
Lua和C++交互:在Lua中以面向对象的方式使用C++注册的类
这篇文章,属于Lua和C++交互的子篇章。总篇章地址:https://blog.youkuaiyun.com/qq826364410/article/details/88624824在Lua中以面向对象的方式使用C++注册的类Lua中面向对象的方式①新建创建对象函数,调用lua_newuserdata,创建一个对象指针,指向new出来的新的对象。得到注册成员方法时,创建的元表StudentClas...原创 2019-03-18 23:02:26 · 2875 阅读 · 1 评论 -
Lua性能优化
一、前言Lua 是一门以其性能著称的脚本语言,被广泛应用在很多方面,尤其是游戏。我认为最好的方式是在首次编写的时候按照最佳实践去写出高性能的代码,而不是编写了一堆垃圾代码后,再考虑优化。相信工作后大家都会对事后的优化的繁琐都深有体会。二、使用 local在代码运行前,Lua 会把源码预编译成一种中间码,类似于 Java 的虚拟机。这种格式然后会通过 C 的解释器进...原创 2019-03-25 01:09:01 · 1771 阅读 · 0 评论 -
Lua和C++交互:全局数组交互
Lua数组①数组是key值从1开始并连续递增的table。②索引号是从1开始,不是从0开始。lua还提供了一些只针对数组进行操作的API,如下:①LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx);luaL_len 使用于数组,可得到数组元素个数;以数字形式返回给定索引处值的“长度”; 它等价于在 Lua...原创 2019-03-21 14:16:19 · 1358 阅读 · 0 评论 -
Lua中的面向对象编程
在Lua中使用 ":"实现面向对象方式的调用。":"只是一个语法糖,它同时在方法的声明与实现中增加一个名为self的隐藏参数(self代表对象本身)。Account = {balance = 1000} -- 账户余额初始为1000。--[[ 取钱。 使用面向对象的方式隐藏了"self"参数, "withdraw()"完整的参数列表是"Account.withd...原创 2019-03-21 12:12:14 · 487 阅读 · 0 评论 -
Lua中的closure(闭包)
第一次看到closure是在Lua虚拟栈的实现中看到的,closure需要内存管理垃圾回收。Lua虚拟栈实现:Lua栈是在创建lua_State时建立的,TValue stack[max_stack_len] ,欲知内情可以查 Lua源码lstate.c的stack_init函数Lua栈可以存储数字,字符串,表,闭包等,它们最终都用TValue这种数据结构来保存 。TValue...原创 2019-03-20 23:15:33 · 1348 阅读 · 0 评论 -
Lua中的userdata
userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 、指针和类)存储到 Lua 变量中调用。userdata分为两类,”full userdata”和”light userdata”。 full userdata light userdata 定义 ...原创 2019-03-20 11:03:08 · 6792 阅读 · 0 评论 -
Visual Studio 2017编译Lua源代码
转载:https://blog.youkuaiyun.com/qq_21397217/article/details/83001161Visual Studio 2017编译Lua源代码准备工作需要带有C++开发组件的Visual Studio 需要Lua源代码(下载页面)下载得到的Lua源代码是一个tar.gz格式的压缩包,提取出其中的 src 文件夹,这个文件夹中包含了 Lua解释器 、 ...转载 2019-03-14 22:56:01 · 1301 阅读 · 0 评论