<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wang1029的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wang1029</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wang1029]]></copyright><item><title><![CDATA[Lua学习笔记 第二十二章 操作系统库]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38893867</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38893867</guid><author>wang1029</author><pubDate>Thu, 28 Aug 2014 09:57:21 +0800</pubDate><description><![CDATA[操作系统库定义在table os中，其中包含了文件操作函数、获取当前日期和时间的函数，
以及其它一些与操作系统相关的功能。对文件操作而言，这个库只提供了两个函数，一个
是用于文件改名的os.rename函数，另一个是用于删除文件的os.remove函数。
 
22.1日期和时间
在Lua中，函数time和date提供了所有的日期和时间功能。
如果不带任何参数调用time函数，它会以数字]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第二十一章  I/O库]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38893769</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38893769</guid><author>wang1029</author><pubDate>Thu, 28 Aug 2014 09:51:46 +0800</pubDate><description><![CDATA[I/O库为文件操作提供了两种不同的模型，简单模型(simple model)和完整模型(complete

model)。简单模型假设有一个当前输入文件和一个当前输出文件，它的I/O操作均作用于
这些文件。完整模型则使用显示的文件句柄。它采用了面向对象的风格，并将所有的操作
定义为文件句柄上的方法。
21.1 简单I/O模型
简单模型的所有操作都作用于两个当前文件。I/O库将当前输入文]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第二十章 字符串库]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38849669</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38849669</guid><author>wang1029</author><pubDate>Tue, 26 Aug 2014 16:29:06 +0800</pubDate><description><![CDATA[字符串库中的所有函数导出在模块string中。
使用时最要采用基于模块的写法,如string.upper(s);
20.1 基础字符串函数
string.len(s)   —— 返回字符串s的长度
string.rep(s, a)—— 可返回字符串s重复n次的结果
string.lower(s) —— 返回一份s的副本，将大写字符转换成小写形式
string.upper(s) —— 与]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第十九章 table库]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38848337</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38848337</guid><author>wang1029</author><pubDate>Tue, 26 Aug 2014 15:29:14 +0800</pubDate><description><![CDATA[table库是由一些辅助函数构成的，这些函数将table作为数组来操作；
19.1 插入和删除
函数table.insert用于将一个元素插入到一个数组的指定位置，它会移动后续元素以空出位置。如果在调用insert时没有指定位置参数，则会将元素添加到数组末尾:
t = {}
for line in io.lines() do 
table.insert(t, line)
end
pr]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第十八章 数学库]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38848309</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38848309</guid><author>wang1029</author><pubDate>Tue, 26 Aug 2014 15:26:27 +0800</pubDate><description><![CDATA[math库由一组标准的数学函数组成，包括三角函数(sin,cos,tan,asin,acos等)、指数和对数函数(exp,log,log10)、取整函数(floor,ceil)、max和min、生成伪随机数的函数(random、randomseed),abs取绝对值,fmod取模以及变量pi和huge。
其中huge为Lua可以表示的最大数字。
所有三角函数都使用弧度单位，可以用函数deg和r]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第十七章  弱引用table]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38848231</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38848231</guid><author>wang1029</author><pubDate>Tue, 26 Aug 2014 15:24:37 +0800</pubDate><description><![CDATA[Lua采用了自动内存管理机制。一个程序只需创建对象，而无需删除对象。通过使用垃圾
收集机制，Lua会自动地删除那些已成为垃圾的对象。这减轻了程序员在内存管理方面的
负担，更重要的是将程序员从许多内存的bug中(如无效指针、内存泄露)中解放出来。
垃圾收集器只能回收那些它认为是垃圾的东西，它不会回收那些用户认为是垃圾的东西。
如递减顶部索引后，之前的栈顶元素仍保留在数组中；存储在全局变量中的]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第十六章 面向对象编程]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38847847</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38847847</guid><author>wang1029</author><pubDate>Tue, 26 Aug 2014 15:05:22 +0800</pubDate><description><![CDATA[Lua中的table就是一种对象。首先，table与对象一样可以拥有状态；其次，table与对象一样拥有一个独立于其值的标识（一个self）。最后，table与对象一样具有独立于创建者的生命周期。
在函数中使用全局名称是一个不好的编程习惯。因为这个函数只能针对特定对象工作，并且这个特定对象还必须存储在特定的全局变量中。这种行为违反了对象特性，即对象拥有独立的声明周期。因此需要一个额外的参数来指定]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第十五章 模块与包]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38847681</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38847681</guid><author>wang1029</author><pubDate>Tue, 26 Aug 2014 14:55:28 +0800</pubDate><description><![CDATA[模块系统的一个主要目标是允许程序以不同的形式来共享代码。要实现共享就需要一些公共的规则。
Lua从5.1开始，为模块和包定义了一系列的规则。这些规则不需要语言引入额外的技能，
程序员可以使用table、函数、元表和环境来实现这些规则。有两个重要的函数可以很容易通过这些规则，它们是require(用于使用模块)和module(用于创建模块)。程序员可以使用不同的规则来重新实现这两个函数。
从用]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第十四章 环境]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38847503</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38847503</guid><author>wang1029</author><pubDate>Tue, 26 Aug 2014 14:46:53 +0800</pubDate><description><![CDATA[Lua将所有的全局变量保存在一个常规的table中，这个table称为"环境(enviroment)".
这种组织结构的优点在于，其一、不需要再为全局变量创造一种新的数据结构，因此简化了Lua的内部实现。
另一个优点是，可以像其他table一样操作这个table。为了便于实施这种操作，Lua将环境table自身保存在一
个全局变量_G中。
示例 —— 打印当前环境中所有全局变量的名称:
]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第十三章 元表(metatable) 与元方法(meatmethod)]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38824171</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38824171</guid><author>wang1029</author><pubDate>Mon, 25 Aug 2014 18:03:28 +0800</pubDate><description><![CDATA[通常Lua中，每个值都有一套预定义的操作集合。这个集合叫做元表。
我们可以通过元表来修改一个值的行为，使其在面对一个非预定义的操作时执行一个指定的操作。
如两个table相加。
元方法是元表中的一个值，这个值应该是一个函数。
Lua中的每个值都有一个元表。table和userdata可以有各自独立的元表，而其他类型的值
则共享其类型所属的单一元表。Lua在创建新的table时不会创建元表]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第十二章 数据文件与持久性]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38823877</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38823877</guid><author>wang1029</author><pubDate>Mon, 25 Aug 2014 17:44:04 +0800</pubDate><description><![CDATA[12.1 
数据文件
像10.1节介绍的那样，可以由table构造式来定义一种文件格式。这项技术也就是将数据
作为Lua代码来输出，当运行这些代码时，程序也就读取了数据。示例——原来的数据文件格式:
Donald E.Knuth, Literate Programming, CSLI, 1992
Jon Bentley, More Programming Pearls, Addisom-]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第十一章 数据结构]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38823799</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38823799</guid><author>wang1029</author><pubDate>Mon, 25 Aug 2014 17:41:29 +0800</pubDate><description><![CDATA[Lua中的table不是一种简单的数据结构，它可以作为其它数据结构的基础。
如数组、链表、队列等。
 
11.1数组
使用整数来索引table即可在lua中实现数组。因此，数组没有一个固定的大小，可以根据需要增长。如:
a = {}
for i=1, 1000 do
    a[i] = 0
end
也可以使用0、1或者其它任意值来作为数组的起始索引。但如果数组的索引不以1开始，]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第十章 完整的示例]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38758333</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38758333</guid><author>wang1029</author><pubDate>Fri, 22 Aug 2014 16:11:20 +0800</pubDate><description><![CDATA[参考书本详细示例]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第九章 协同程序 —— coroutine]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38758201</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38758201</guid><author>wang1029</author><pubDate>Fri, 22 Aug 2014 16:03:11 +0800</pubDate><description><![CDATA[协同程序与线程差不多，拥有自己独立的栈、局部变量和指令指针，同时又与其它协同程序共享全局变量和其它大部分东西。线程与协同程序的主要区别:
一个具有多个线程的程序可以同时运行几个线程；而一个具有多个协同程序的程序在任意时刻只能运行一个协同程序，并且正在运行的协同程序只会在其显示地要求挂起时，它的执行才会暂停。
 
9.1 协同程序基础
Lua将所有协同程序的函数放置在一个名为"corouti]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第八章 编译、执行与错误]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38757829</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38757829</guid><author>wang1029</author><pubDate>Fri, 22 Aug 2014 15:45:24 +0800</pubDate><description><![CDATA[Lua是一种解释型语言，区别解释型语言的主要特征并不在于是否能编译他们，而是在于编译器是否是语言运行时库的一部分，即是否有能力执行动态生成的代码。
 
8.1编译
在Lua中，dofile函数是一种内置操作，用于运行Lua代码块;但实际上dofile只是一个辅助函数，loadfile才做了真正核心的工作。loadfile的两个功能:一是从一个文件中加载Lua
代码块,但它不会运行代码，只是]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第七章 迭代器与泛型for]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38757733</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38757733</guid><author>wang1029</author><pubDate>Fri, 22 Aug 2014 15:40:35 +0800</pubDate><description><![CDATA[7.1 
迭代器与closure
所谓迭代器就是一种可以遍历一种集合中所有元素的机制；在Lua中，通常将迭代器表示为函数；
每调用一次函数即返回集合中的下一个元素；
closure(闭合函数)对于迭代器的实现提供了极佳的支持；一个closure结构通常涉及到两个函数
:closure本身和一个用于创建该closure的工厂(factory)函数；
简单的迭代器示例  ——
funct]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第六章 深入函数]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38757683</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38757683</guid><author>wang1029</author><pubDate>Fri, 22 Aug 2014 15:35:33 +0800</pubDate><description><![CDATA[在Lua中，函数是一种第一类值，它们具有特定的词法域；
第一类值表示函数与其他传统类型的值具有相同的权利，函数可以存储到变量中或table中，
可以作为实参传递给其他函数，还可以作为其他函数的返回值；
词法域是指一个函数可以嵌套在另一个函数中，内部的函数可以访问外部函数中的变量；
在Lua中函数与所有其它值一样都是匿名的，即它们都没有名称。当讨论一个函数名时实际
上是讨论一个持有某函数的]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第五章 函数]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38757629</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38757629</guid><author>wang1029</author><pubDate>Fri, 22 Aug 2014 15:33:01 +0800</pubDate><description><![CDATA[在lua中，函数是一种对语句和表达式进行抽象的主要机制。函数既可以完成某项特定
的任务，也可以只做一些计算并返回结果；
lua为面向对象式的调用也提供了一种特殊语法——冒号操作符。表达式o.foo(o,x)的
另一种写法是o:foo(x),冒号操作符使调用o.foo时将o隐含地作为函数的第一个参数；
一个lua程序既可以使用lua编写的函数，又可以调用以C语言编写的函数。
所有lua标准]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第四章 语句]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38757579</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38757579</guid><author>wang1029</author><pubDate>Fri, 22 Aug 2014 15:30:36 +0800</pubDate><description><![CDATA[4.1赋值 
lua允许多重赋值，也就是将多个值赋予多个变量；每个值或每个变量之间以逗号分隔；
lua会将等号右边值的个数调整到与左边变量的个数相一致。如果值的个数少于变量的个数，多余的变量会被赋为nil；
若值得个数多余变量的个数，那么多余的值会被丢弃(先丢弃最右边的);
多重赋值中，lua会先对等号右边的所有元素求值，然后才执行赋值；这样便可以用一句多重赋值来交换两个变量的值了，如: ]]></description><category></category></item><item><title><![CDATA[Lua学习笔记 第三章 表达式]]></title><link>https://blog.youkuaiyun.com/wang1029/article/details/38753999</link><guid>https://blog.youkuaiyun.com/wang1029/article/details/38753999</guid><author>wang1029</author><pubDate>Fri, 22 Aug 2014 11:42:13 +0800</pubDate><description><![CDATA[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]]></description><category></category></item></channel></rss>