南锋

南奔万里空,脱死锋镝余

在处理数据文件时,写数据通常比读数据简单很多。当向一个文件中写时,我们拥有绝对的控制权;但是,当从一个文件中读时,我们并不知道会读什么东西。一个健壮的程序除了能够处理一个合法文件中所包含的所有类型的数据外,还应该能够优雅地处理错误的文件。因此,编写一个健壮的处理输入的程序总是比较困难的。

阅读全文 »

Lua语言中的表并不是一种数据结构,它们是其他数据结构的基础。我们可以用Lua语言中的表来实现其他语言提供的数据结构,如数组、记录、列表、队列、集合等。而且,用Lua语言中的表实现这些数据结构还很高效。

阅读全文 »

Lua语言处理二进制数据的方式与处理文本的方式类似。Lua语言中的字符串可以包含热议字节,并且几乎所有能够处理字符串的库函数也能处理任意字节。我们甚至可以对二进制数据进行模式匹配。以此为基础,Lua5.3中引入了用于操作二进制数据的额外机制:除了整型数外,该版本还引入了位操作及用于打包/解包二进制数据的函数。

阅读全文 »

与其他几种脚本语言不通,Lua语言既没有使用POSIX正则表达式,也没有使用Perl正则表达式来进行模式匹配。之所以这样做的主要原因在于大小问题:一个典型的POSIX正则表达式实现需要超过4000行代码,这比所有Lua语言标准库总大小的一半还大。相比之下,Lua语言模式匹配的实现代码只有不到600行。尽管Lua语言的欧式匹配做不到完整POSIX实现的所有功能,但是Lua语言的模式匹配仍然非常强大,同时还具有一些与标准POSIX不同但又可与之媲美的功能。

阅读全文 »

在Lua语言中,函数是严格遵循词法定界的第一类值。
“第一类值”以为这Lua语言中的函数与其他常见类型的值具有同等权限:一个程序可以将某个函数保存到变量中或表中,也可以将某个函数作为参数传递给其他函数,还可以将某个函数作为其他函数的返回值返回。

阅读全文 »

由于Lua语言强调可移植性和嵌入性,所以Lua语言本身并没有提供太多与外部交互的机制。在真实的Lua程序中,从图形、数据库到网络的网络的访问等大多数I/O操作,要么游宿主程序实现,要么通过不包括在发行版中的外部库实现。单就Lua语言而言,只提供IOS C语言标准支持的功能,即基本的文件操作等。

阅读全文 »

在Lua语言中,函数是对语句和表达式进行抽象的主要方式。函数既可以用于完成某种特定任务,也可以只是进行一些计算然后返回计算结果。在前一种情况下,我们将一句函数调用视为一条语句;而在后一种情况下,我们则将函数调用视为表达式:

阅读全文 »
+