随笔分类 - lua
摘要:/* 以前听的一个故事,当年Java的创造者讲课的时候,一开始先拿一个简单的不能简单的小例子, 不断的扩展,最后成为一个复杂而完美的程序。 一个重要之重要的概念,就是栈。Lua与别的语言交互以及交换数据,是通过栈完成的。 */ #include using namespace std; extern "C" //这部分按C语言进行编译而不是C++ { #include "lua....
阅读全文
摘要:定义:弱表的使用就是使用弱引用,很多程度上是对内存的控制。 1、weak表示一个表,它拥有metatable,并且metatable定义了__mode字段。 2、弱引用不会导致对象的引用计数变化。换言之,一个对象只有弱引用指向它,那么gc会自动回收该对象的内存。 3、__mode字段可以取以下三个值
阅读全文
摘要:最近正在阅读lua源码,遇到座灯塔,转载如下: 我个人的习惯是带着问题去研究一个新题目,比如这次阅读Lua代码,暂列下面这些问题。 1)什么是基于栈、基于寄存器的虚拟机(VM)设计?Lua如何实现基于寄存器的设计? 2)Lua如何解析一段代码,生成中间代码? 3)Lua如何使用VM运行中间代码? 4
阅读全文
摘要:基类:基类定义了所有对于派生类来说普通的属性和方法,派生类从基类继承所需的属性和方法,且在派生类中增加新的属性和方法。 继承:继承是C++语言的一种重要机制,它允许在已定义的类的基础上产生新类。 lua基类和C++基类极为相似,但是lua中却没有继承这一说,更没有所谓的派生类。lua只能通过一种行为
阅读全文
摘要:Lua为了保证高度的可移植性,因此,它的标准库仅仅提供了非常少的功能,特别是和OS相关的库。但是Lua还提供了一些扩展库,比如Posix库等。对于文件操作而言,该库仅提供了os.rename函数和os.remove函数。 1. 日期和时间: 在Lua中,函数time和date提供了所有的日期和时...
阅读全文
摘要:1、简单模型)1、io.write函数: 函数模型为io.write(...))2、io.read函数: io.read(“*all”) 读取当前输入的整个文件 io.read(”*line“) 读取下一行 io.read(“*number”) 读取一个整数 io.read(num) 读取当前输入的...
阅读全文
摘要:1. 基础字符串函数: 字符串库中有一些函数非常简单,如: 1). string.len(s) 返回字符串s的长度; 2). string.rep(s,n) 返回字符串s重复n次的结果; 3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变; 4)....
阅读全文
摘要:lua中的table就是一种对象,但是如果直接使用仍然会存在大量的问题,如下:1 Account = {balance = 0}2 function Account.withdraw(v)3 Account.balance = Account.balance - v4 end5 --下面是...
阅读全文
摘要:在lua中,我们可以直接使用require(“model_name”)来载入别的文件,文件的后缀名是.lua,载入的时候直接执行那个文件了。比如:my.lua 文件中print(“hello world!”)当我require(“my”)时,那么会直接输出hello world!特别注意:1、用re...
阅读全文
摘要:lua中提供的元表(metatable)与元方法(metamethod)是一种非常重要的语法,metatable主要用于做一些类似于C++重载操作符式的功能。 lua中提供的元表是用于帮助lua变量完成某些非预定义功能的个性化行为,如两个table的相加,通过让两者指向同一元表并修改该元表的元方法...
阅读全文
摘要:1、数据文件我们可以利用Lua中的table构造式来定义一种文件格式,即文件中的数据是table构造并初始化的代码 ,这种方式对于Lua程序而言是非常方便和清晰的,如:Entry{"deng","Male","22"}Entry{"li","Female","22"}该数据存储在“example....
阅读全文
摘要:lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示。1、数组在lua中,table的索引可以有很多种表示方式。如果用整数来表示table的索引,即可用table来实现数组,在lua中索引通常都会从1开始。--二维数组n=10 m=1...
阅读全文
摘要:1、迭代器与closure在lua中,迭代器通常为函数,每调用一次函数,会返回集合中的下一个元素。每个迭代器在成功调用的时候,都需要保存一些状态,closure(闭包)完美为迭代器运用而生。function values(t) local i=0 return function() --...
阅读全文
摘要:一、函数 在lua中函数的调用方式和C语言基本相同。 如print(“hello world”), z=add(x+y)。唯一的差别是,如果函数只有一个参数,并且该参数是字符串或者table构造器,那么圆括号可以省略,如print “hello world”, f{x=10,y=10}。 我对于...
阅读全文
摘要:这些函数都是Lua编程语言的一部分, 点击这里了解更多.assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息collectgarbage() - 垃圾收集器. (新增于1.10.1)date(format, time)...
阅读全文
摘要:lua中利用到的排序的基本上就是构造函数(table)了,为了便于和C区分开来,我俗称它为表单。实例:(原理就是LUA集成的冒泡算法)排序的一般姿势(对于只包含数字或者只包含字符串的简单数组)table.sort(test)扩展版table.sort(test, function(a,b) retu...
阅读全文