- 博客(29)
- 资源 (4)
- 收藏
- 关注
原创 Lua学习笔记 第二十二章 操作系统库
操作系统库定义在table os中,其中包含了文件操作函数、获取当前日期和时间的函数,以及其它一些与操作系统相关的功能。对文件操作而言,这个库只提供了两个函数,一个是用于文件改名的os.rename函数,另一个是用于删除文件的os.remove函数。 22.1日期和时间在Lua中,函数time和date提供了所有的日期和时间功能。如果不带任何参数调用time函数,它会以数字
2014-08-28 09:57:21
535
原创 Lua学习笔记 第二十一章 I/O库
I/O库为文件操作提供了两种不同的模型,简单模型(simple model)和完整模型(completemodel)。简单模型假设有一个当前输入文件和一个当前输出文件,它的I/O操作均作用于这些文件。完整模型则使用显示的文件句柄。它采用了面向对象的风格,并将所有的操作定义为文件句柄上的方法。21.1 简单I/O模型简单模型的所有操作都作用于两个当前文件。I/O库将当前输入文
2014-08-28 09:51:46
549
原创 Lua学习笔记 第二十章 字符串库
字符串库中的所有函数导出在模块string中。使用时最要采用基于模块的写法,如string.upper(s);20.1 基础字符串函数string.len(s) —— 返回字符串s的长度string.rep(s, a)—— 可返回字符串s重复n次的结果string.lower(s) —— 返回一份s的副本,将大写字符转换成小写形式string.upper(s) —— 与
2014-08-26 16:29:06
396
原创 Lua学习笔记 第十九章 table库
table库是由一些辅助函数构成的,这些函数将table作为数组来操作;19.1 插入和删除函数table.insert用于将一个元素插入到一个数组的指定位置,它会移动后续元素以空出位置。如果在调用insert时没有指定位置参数,则会将元素添加到数组末尾:t = {}for line in io.lines() do table.insert(t, line)endpr
2014-08-26 15:29:14
509
原创 Lua学习笔记 第十八章 数学库
math库由一组标准的数学函数组成,包括三角函数(sin,cos,tan,asin,acos等)、指数和对数函数(exp,log,log10)、取整函数(floor,ceil)、max和min、生成伪随机数的函数(random、randomseed),abs取绝对值,fmod取模以及变量pi和huge。其中huge为Lua可以表示的最大数字。所有三角函数都使用弧度单位,可以用函数deg和r
2014-08-26 15:26:27
427
原创 Lua学习笔记 第十七章 弱引用table
Lua采用了自动内存管理机制。一个程序只需创建对象,而无需删除对象。通过使用垃圾收集机制,Lua会自动地删除那些已成为垃圾的对象。这减轻了程序员在内存管理方面的负担,更重要的是将程序员从许多内存的bug中(如无效指针、内存泄露)中解放出来。垃圾收集器只能回收那些它认为是垃圾的东西,它不会回收那些用户认为是垃圾的东西。如递减顶部索引后,之前的栈顶元素仍保留在数组中;存储在全局变量中的
2014-08-26 15:24:37
630
原创 Lua学习笔记 第十六章 面向对象编程
Lua中的table就是一种对象。首先,table与对象一样可以拥有状态;其次,table与对象一样拥有一个独立于其值的标识(一个self)。最后,table与对象一样具有独立于创建者的生命周期。在函数中使用全局名称是一个不好的编程习惯。因为这个函数只能针对特定对象工作,并且这个特定对象还必须存储在特定的全局变量中。这种行为违反了对象特性,即对象拥有独立的声明周期。因此需要一个额外的参数来指定
2014-08-26 15:05:22
485
原创 Lua学习笔记 第十五章 模块与包
模块系统的一个主要目标是允许程序以不同的形式来共享代码。要实现共享就需要一些公共的规则。Lua从5.1开始,为模块和包定义了一系列的规则。这些规则不需要语言引入额外的技能,程序员可以使用table、函数、元表和环境来实现这些规则。有两个重要的函数可以很容易通过这些规则,它们是require(用于使用模块)和module(用于创建模块)。程序员可以使用不同的规则来重新实现这两个函数。从用
2014-08-26 14:55:28
659
原创 Lua学习笔记 第十四章 环境
Lua将所有的全局变量保存在一个常规的table中,这个table称为"环境(enviroment)".这种组织结构的优点在于,其一、不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现。另一个优点是,可以像其他table一样操作这个table。为了便于实施这种操作,Lua将环境table自身保存在一个全局变量_G中。示例 —— 打印当前环境中所有全局变量的名称:
2014-08-26 14:46:53
481
原创 Lua学习笔记 第十三章 元表(metatable) 与元方法(meatmethod)
通常Lua中,每个值都有一套预定义的操作集合。这个集合叫做元表。我们可以通过元表来修改一个值的行为,使其在面对一个非预定义的操作时执行一个指定的操作。如两个table相加。元方法是元表中的一个值,这个值应该是一个函数。Lua中的每个值都有一个元表。table和userdata可以有各自独立的元表,而其他类型的值则共享其类型所属的单一元表。Lua在创建新的table时不会创建元表
2014-08-25 18:03:28
558
原创 Lua学习笔记 第十二章 数据文件与持久性
12.1 数据文件像10.1节介绍的那样,可以由table构造式来定义一种文件格式。这项技术也就是将数据作为Lua代码来输出,当运行这些代码时,程序也就读取了数据。示例——原来的数据文件格式:Donald E.Knuth, Literate Programming, CSLI, 1992Jon Bentley, More Programming Pearls, Addisom-
2014-08-25 17:44:04
581
原创 Lua学习笔记 第十一章 数据结构
Lua中的table不是一种简单的数据结构,它可以作为其它数据结构的基础。如数组、链表、队列等。 11.1数组使用整数来索引table即可在lua中实现数组。因此,数组没有一个固定的大小,可以根据需要增长。如:a = {}for i=1, 1000 do a[i] = 0end也可以使用0、1或者其它任意值来作为数组的起始索引。但如果数组的索引不以1开始,
2014-08-25 17:41:29
396
原创 Lua学习笔记 第九章 协同程序 —— coroutine
协同程序与线程差不多,拥有自己独立的栈、局部变量和指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。线程与协同程序的主要区别:一个具有多个线程的程序可以同时运行几个线程;而一个具有多个协同程序的程序在任意时刻只能运行一个协同程序,并且正在运行的协同程序只会在其显示地要求挂起时,它的执行才会暂停。 9.1 协同程序基础Lua将所有协同程序的函数放置在一个名为"corouti
2014-08-22 16:03:11
488
原创 Lua学习笔记 第八章 编译、执行与错误
Lua是一种解释型语言,区别解释型语言的主要特征并不在于是否能编译他们,而是在于编译器是否是语言运行时库的一部分,即是否有能力执行动态生成的代码。 8.1编译在Lua中,dofile函数是一种内置操作,用于运行Lua代码块;但实际上dofile只是一个辅助函数,loadfile才做了真正核心的工作。loadfile的两个功能:一是从一个文件中加载Lua代码块,但它不会运行代码,只是
2014-08-22 15:45:24
507
原创 Lua学习笔记 第七章 迭代器与泛型for
7.1 迭代器与closure所谓迭代器就是一种可以遍历一种集合中所有元素的机制;在Lua中,通常将迭代器表示为函数;每调用一次函数即返回集合中的下一个元素;closure(闭合函数)对于迭代器的实现提供了极佳的支持;一个closure结构通常涉及到两个函数:closure本身和一个用于创建该closure的工厂(factory)函数;简单的迭代器示例 ——funct
2014-08-22 15:40:35
408
原创 Lua学习笔记 第六章 深入函数
在Lua中,函数是一种第一类值,它们具有特定的词法域;第一类值表示函数与其他传统类型的值具有相同的权利,函数可以存储到变量中或table中,可以作为实参传递给其他函数,还可以作为其他函数的返回值;词法域是指一个函数可以嵌套在另一个函数中,内部的函数可以访问外部函数中的变量;在Lua中函数与所有其它值一样都是匿名的,即它们都没有名称。当讨论一个函数名时实际上是讨论一个持有某函数的
2014-08-22 15:35:33
405
原创 Lua学习笔记 第五章 函数
在lua中,函数是一种对语句和表达式进行抽象的主要机制。函数既可以完成某项特定的任务,也可以只做一些计算并返回结果;lua为面向对象式的调用也提供了一种特殊语法——冒号操作符。表达式o.foo(o,x)的另一种写法是o:foo(x),冒号操作符使调用o.foo时将o隐含地作为函数的第一个参数;一个lua程序既可以使用lua编写的函数,又可以调用以C语言编写的函数。所有lua标准
2014-08-22 15:33:01
436
原创 Lua学习笔记 第四章 语句
4.1赋值 lua允许多重赋值,也就是将多个值赋予多个变量;每个值或每个变量之间以逗号分隔;lua会将等号右边值的个数调整到与左边变量的个数相一致。如果值的个数少于变量的个数,多余的变量会被赋为nil;若值得个数多余变量的个数,那么多余的值会被丢弃(先丢弃最右边的);多重赋值中,lua会先对等号右边的所有元素求值,然后才执行赋值;这样便可以用一句多重赋值来交换两个变量的值了,如:
2014-08-22 15:30:36
355
原创 Lua学习笔记 第三章 表达式
3.1算术操作符lua支持常规的算术操作符 —— + - * / ^ % -(负号)例如 x^0.5是计算x的平方根 x^(-1/3)是计算x立方根的倒数对于实数x,x%1的结果是x的小数部分,而x-x%1的结果是x的整数部分,x-x%0.01是精确到x小数点后两位的结果; 3.2关系操作符lua提供的关系操作符 = == ~=所有这些操作符的运算结果都是tru
2014-08-22 11:42:13
364
原创 Lua学习笔记 第二章 类型与值
lua是一种动态类型语言;lua中的8种基础类型是:nil, boolean, number, string, userdata, function,thread, table函数type()可根据一个值返回其类型名称; nil是一种类型,只有一个值;一个全局变量在第一次赋值前的默认值就是nil,将nil赋予一个全局变量等同于删除它; boolean类型有两个值fals
2014-08-22 11:25:17
476
原创 Lua学习笔记 第一章 开始
Lua学习笔记第一章一节1.下载安装完lua后,会自带一个lua解释器程序!使用命令 lua hello.lua 便可 运行.lua文件;2.直接在命令行中执行lua解释器便进入交互模式,在这种模式下输入的每条命令 都将立即被执行;3.退出解释器,使用系统函数os.exit() 或快捷键 ctrl+D (windows下是ctrl+Z)4.另一种执行文件的方式是
2014-08-22 11:08:25
431
原创 快速排序
快速排序(类似于归并算法)是一种分而治之算法。首先它将列表分为两个更小的子列表:一个大一个小。然后递归排序这些子列表。下面就用分而治之的方法来排序子数组A[p...r];步骤:Divide:从列表中取一个元素作为支点,将数组分为A[p‥q - 1] andA[q + 1‥r] ,A[p ‥ q - 1]中每一个元素都小于A[q] , 而A[q + 1 ‥ r]中每个元素都大
2014-04-17 10:14:20
399
原创 冒泡排序
/* *冒泡排序 从小到大排序 */#include void bubbleSort(int arr[], int size){ int pos1 = 0, pos2 = 0; // 分别是外层循环和内层循环的下标 for(pos1 = size-1; pos1 >= 1; --pos1) { for(pos2 = 0; pos2
2014-04-16 12:23:32
411
原创 汉诺塔问题——递归
#include int loop = 0; // 记录移动次数void hanNuoTa(int n, char a, char b, char c){ if(n == 1) { printf("%c ——> %c\n", a, c); ++loop; } else { hanNu
2014-04-15 14:32:04
465
转载 求一个无符号整数转化为二进制后1的个数
/* *给出一个整数,求这个整数转化为二进制后1的个数 */#include int numOfOne(int n){ unsigned int flag = 1; int count = 0; while(flag { if(flag & n) { ++count;
2014-04-14 18:42:03
1047
原创 插入排序
#include void insertSort(int arr[], int size){ int i = 0; while(i { int k = i; for(k; k { if( arr[i] > arr[k]) {
2014-04-14 16:32:29
724
bootstrap-table-editable.js
2018-01-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人