lua
文章平均质量分 78
蓝色歌谣
这个作者很懒,什么都没留下…
展开
-
Programming in Lua, 2Nd Edition - Chapter 25: Extending Your Application
<br /> <br /> <br /> <br /> <br /> <br /> <br />Chapter 25: Extending Your Application<br /> <br />Lua 的一种重要应用是作为一种配置语言。这一章我们将展示如何用Lua 来配置一个应用程序。<br /> <br />25.1 The Basics<br /> <br />加载lua配置文件初始化应用程序<br /> <br />-- config.lua<br />-- define window size<原创 2010-11-28 22:22:00 · 357 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 14: The Environment
<br /> <br /> <br /> <br />Chapter 14: The Environment<br /> <br />Lua 把所有全局变量都存在一个普通的表environment 里面。(更准确的说,是多个环境)这样做的好外是简化了lua 的内部实现。environment 本身又存在_G 里面。<br /> <br />打印当前已定义的所有全局变量<br /> <br />for n in pairs(_G) do print(n) end<br /> <br /> <br />14.1原创 2010-11-03 10:12:00 · 280 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 15: Modules and Packages
15.5 Submodules and Packages将库放在单独的目录里-- ./complexlib/complex.lualocal floor = math.floormodule(...)function new (r, i) return {r=r, i=i} endfunction add (c1, c2) floor(1.5) -- 访问外部模块 return new(c1.r + c2.r, c1.i + c2.i)end-------------------原创 2010-11-07 13:55:00 · 501 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 18: The Mathematical Library
<br /> <br /> <br /> <br /> <br /> <br />Part III: The Standard Libraries<br /> <br />Chapter 18: The Mathematical Library<br /> <br />所有三角函数使用弧度制。你可以使用deg 和rad 函数在度和弧度间转换。也可以重定义三角函数为使用度而不是弧度。<br /> <br />local sin, asin, ... = math.sin, math.asin, ...<br原创 2010-11-12 21:00:00 · 233 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 16: Object-Oriented Programming
<br /> <br /> <br /> <br />Chapter 16: Object-Oriented Programming<br /> <br />表是对象<br /> <br />表可以有自已的成员函数:<br /> <br />Account = {balance = 0}<br />function Account.withdraw (v)<br /> Account.balance = Account.balance - v<br />end<br />Account.with原创 2010-11-12 01:48:00 · 260 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 17: Weak Tables
<br /> <br /> <br /> <br /> <br />Chapter 17: Weak Tables<br /> <br />Lua 实行自动内存管理。程序创建各种对象,而这里没有方法去删除对象。Lua 使用garbage collection 自动删除那些变成垃圾的对象。而它使你得以从内存管理的重负中释放出来,更重要的是,野指针和内存泄漏不再是困扰你的问题。<br /> <br />但是,有时垃圾收集器需要你的帮助。垃圾收集器只能收集那些确实是垃圾的东西,但是无法猜测你所认为是垃圾的某些东西原创 2010-11-12 16:21:00 · 413 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 19: The Table Library
<br /> <br /> <br /> <br /> <br />Chapter 19: The Table Library<br /> <br />table 库包含操作表和数组的辅助函数。table 库提供了从列表中插入和移除元素,对数组的元素进行排序,连接数组中的所有string 的函数。<br /> <br /><br /><br /> <br />19.1 Insert and Remove<br /> <br />如果t 是数组{10,20,30},调用table.insert(t,1,15)原创 2010-11-12 21:03:00 · 272 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 20: The String Library
<br /> <br /> <br /> <br /> <br /> <br />Chapter 20: The String Library<br /> <br /> <br />20.1 Basic String Functions<br /> <br />string.len(s)<br />string.rep(s,n) -- 返回s重复n 次的string<br />string.rep("a",2^20) -- 返回1M大小的string<br />string.lower(s)<br />原创 2010-11-16 14:42:00 · 709 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 22: The Operating System Library
<br /> <br /> <br /> <br /> <br /> <br />Chapter 22: The Operating System Library<br /> <br />Lua 是用C 写的,而且只使用那些ANSI 标准定义的功能。其它的功能由别的库提供,比如posix library,luasocket。对于文件操作,所有这些库最提供一个os.rename 函数用来给文件改名,和一个os.remove 函数用来删除一个文件。<br /> <br /> <br />22.1 Date an原创 2010-11-18 00:54:00 · 398 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 21: The I/O Library
<br /> <br /> <br /> <br /> <br /> <br />Chapter 21: The I/O Library<br /> <br /> <br />21.1 The Simple I/O Model<br /> <br /> <br />io.write 函数接受任意数量的参数,并将它们写入当前output file。<br /> <br />io.write("sin (3) = ", math.sin(3), "/n")<br />--> sin (3) = 0.141120原创 2010-11-18 00:23:00 · 873 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 24: An Overview of the C API
<br /> <br /> <br /> <br /> <br /> <br />Part IV: The C API<br /> <br /> <br />Chapter 24: An Overview of the C API<br /> <br /> <br />无处不在的virtual stack是lua 和C 之间通信的主要主件。lua 到C,C到lua 所有的数据交换都通过这个栈。<br /> <br />24.1 A First Example<br /> <br />头文件lua.h定义了由原创 2010-11-26 20:15:00 · 472 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 23: The Debug Library
<br /> <br /> <br /> <br /> <br />Chapter 23: The Debug Library<br /> <br />Debug 库没有给你一个lua 调试器,但是当你要写自已的调试器时,它提供了所有你需要的东西。因为效率的原因,官方接口是通过C API提供。Lua 中的调试库是一种在lua 代码中直接访问它们方法。不像其它的库,你应该吝啬的使用调试库。首先,是性能的原因。其次,它打破了语言的一些“哲学”,例如你不能从函数的外部访问一个由那个函数创建的局部变量。通常,你可能原创 2010-11-24 18:59:00 · 519 阅读 · 0 评论 -
sciTE支持中文的办法
http://hi.baidu.com/boxr/blog/item/e5b0d39441f10c17d21b70a8.htmlsciTE支持中文的办法:启动scite, 照下面的顺序点击菜单:Options, Open User Options file,转载 2011-07-05 14:22:52 · 580 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 13: Metatables and Metamethods
<br /> <br /> <br />Chapter 13: Metatables and Metamethods<br /> <br />我们可以加两个数,连接字符串,往表中插入key-value 对,但我们不能对表执行加法,不能比较两个函数,不能call 字符串。<br /> <br />元表(Metatables) 充许我们改变值的行为,当通到未定义操作。例如,使用元表我们能定义Lua 如何计算“表a + 表b”。lua 会检查它们是否有metatable,这个metatable 是抵抗有一个__a原创 2010-11-02 16:06:00 · 355 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 11: Data Structures
<br /> <br /> <br /> <br /> <br />Chapter 11: Data Structures<br /> <br />所有其它语言提供的数据结构——数组,记录,链表,队列,sets 都可以用lua 的table 来表示。<br /> <br />传统的语言如C 和Pascal,我们用得最多的数据结构是数组和链表(这里链表=记录+指针)。虽然我们可以将数组和链表用Lua 的表来实现(有时我们会这样做),表比数组和链表更强大。利用表使得许多算法的元素遍历得到简化,例如,我们很少写原创 2010-10-30 21:24:00 · 501 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 12: Data Files and Persistence
<br /> <br /> <br /> <br /> <br />Chapter 12: Data Files and Persistence<br /> <br />写文件比读文件要容易。写文件我们可以获得完全的控制,而读文件我们无法知道会有什么意外发生。<br /> <br />12.1 Data Files<br /> <br />如果数据文件是预定义格式,如CSV,XML,我们选择很少。但是,如果我们想要创建我们的自定义文件,我们可以用Lua constructors 作为文件格式。这种格式将每条原创 2010-10-31 18:04:00 · 271 阅读 · 0 评论 -
Programming in Lua, 2nd edition-Chapter 3: Expressions
<br /> <br />Chapter 3: Expressions<br /> <br />3.1 Arithmetic Operators<br /> <br />x^0.5 -- 计算x 的平方根<br /> <br />a % b == a - floor(a/b)*b<br /> <br />x%1 -- 计算x 的小数部分<br />x-x%1 -- 计算x 的整数部分<br />x-x%0.01 -- x 保留两位小数<原创 2010-10-12 11:39:00 · 345 阅读 · 0 评论 -
Programming in Lua, 2nd edition - Chapter 4: Statements
<br /> <br />Chapter 4: Statements<br /> <br />Lua 除支持类似C 的常规语句外,还支持多赋值,局部变量声明等。<br /> <br />4.1 Assignment<br /> <br />赋值<br /> <br />a = "hello" .. "world"<br />t.n = t.n + 1<br /> <br />多赋值<br /> <br />a, b = 10, 2*x -- a gets 10, b gets 2*x<br /> <br原创 2010-10-12 18:03:00 · 281 阅读 · 0 评论 -
Programming in Lua, 2nd edition - Chapter 5: Functions
<br /> <br /> <br />Chapter 5: Functions<br /> <br /> <br />print(8*9, 9/8)<br />a = math.sin(3) + math.cos(10)<br />print(os.date())<br /> <br />一此特殊情况下,函数可以不带括号<br /> <br />函数只有一个参数,并且这个参数是string,或table 的构造器<br /> <br />print "Hello World" <--> print("He原创 2010-10-13 15:54:00 · 376 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 26: Calling C from Lua
Chapter 26: Calling C from Lua要从lua 调用一个C 函数,必须注册它,就是说以舍适的方式把函数的地址传给它。C 函数从栈上获取lua 传过来的参数,而函数的返回值也会压入栈中。当lua 调用一个C 函数,第一个参数在栈中的索引总是1.26.1 C Functions???Any function registered with Lua must have this same prototype, defined as lua_CFunction in lua.h:typede原创 2010-12-02 23:03:00 · 267 阅读 · 0 评论 -
Programming in Lua, 2nd edition:Chapter1-Chapter2
Part I: The LanguageChapter 1: Getting StartedHello,world!print("Hello World")function 函数-- defines a factorial functionfunction fact (n)if n == 0 thenreturn 1elsereturn n * fact(n-1) endendprint("enter a number:")a = io.read("*number") -- read a n原创 2010-10-11 20:52:00 · 449 阅读 · 0 评论 -
Programming in Lua, 2nd edition - Chapter 6: More About Functions
Chapter 6: More About Functions函数可以被存在变量和表里面,可以被作为参数传递,可以被作为函数的返回值。a = {p = print}a.p("Hello World") --> Hello Worldprint = math.sin -- 'print' now refers to the sine functiona.p(print(1)) --> 0.841470sin = a.p -- 'sin' now refers to原创 2010-10-14 15:25:00 · 342 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 27: Techniques for Writing C Functions
<br /> <br /> <br /> <br /> <br />Chapter 27: Techniques for Writing C Functions<br /> <br />官方API 和辅助库都提供了一些机制用来帮助C 函数的编写。本章将讨论数组操作,string 操作,和将lua 值存在C 中。<br /> <br />27.1 Array Manipulation<br /> <br />“数组”只是表在特殊用法下的一个别名。数组操作可以使用lua_settable 和lua_getta原创 2010-12-02 23:31:00 · 625 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 28: User-Defined Types in C
<br /> <br /> <br /> <br /> <br />Chapter 28: User-Defined Types in C<br /> <br /> <br />在前面的章节中我们已经看到如何通过编写新的C函数来扩展Lua。现在,我们将讨论如何通过编写C 代码来扩展Lua 以获得新类型。<br /> <br />我们的例子是一个相当简单的类型:布尔数组。当然,我们可以使用lua 的表来实现,但是每一个entry 用C 来实现只需要一个bit,这比表实现节省3% 的内存。<br /> <br原创 2010-12-04 16:13:00 · 406 阅读 · 0 评论 -
Programming in Lua, 2nd edition - Chapter 7: Iterators and the Generic for
<br /> <br />Chapter 7: Iterators and the Generic for<br /> <br />本章我们将讨论如何为泛型for 编写简单且高效的迭代器。<br /> <br />7.1 Iterators and Closures<br /> <br />Lua用函数来实现迭代器,每调用一次函数,它就返回集合的下一个元素。<br /> <br />所有迭代器在连续操作中需要保存一些状态,这些状态表明这是哪里以及如何从这里继续处理。闭包(Closures) 为此任务提供了一原创 2010-10-18 14:42:00 · 228 阅读 · 0 评论 -
Programming in Lua, 2nd edition - Chapter 8: Compilation, Execution, and Errors
<br /> <br /> <br /> <br />Chapter 8: Compilation, Execution, and Errors<br /> <br />决定一种语言是不是解释语言并不在于其是否需要编译,而是其编译器是语言运行时的一部份。Lua 源代码在运行前总是被编译成中间语言。<br /> <br />8.1 Compilation<br /> <br />lib1.lua<br />function norm (x, y)<br />return (x^2 + y^2)^0.5<br原创 2010-10-19 14:20:00 · 532 阅读 · 0 评论 -
Programming in Lua, 2nd edition - Chapter 9: Coroutines
<br /> <br /> <br /> <br />Chapter 9: Coroutines<br /> <br />协程是一种非抢占式多线程。当一个协程运行时,没有办法从外部将其停止,只有等它自已主动进入休眼状态(调用yield)或自行终止。对协程来说,各个任务运行于独立的协程中。在协程间进行切换的代价大体上和函数调用相当。(协程的运行过程是执行-暂停、执行-暂停,…)<br /> <br />协程与线程类似:是一串操作,有自已的栈、局部变量和指令指针;但是与其它协程共享全局变量和几乎其它程何东西。协原创 2010-10-23 00:29:00 · 451 阅读 · 0 评论 -
Programming in Lua, 2Nd Edition - Chapter 10: Complete Examples
<br /> <br /> <br />Chapter 10: Complete Examples<br /> <br />最后,我们以两个展示Lua 的不同特性的完整示例程序来结束关于语言的介绍。第一个示例展示了将Lua 作为一种数据描述语言来使用。第二个例子是一个马尔可夫链的实现,由Kernighan & Pike 的《Practice of Programming》 (Addison-Wesley, 1999) 一书描述。<br /> <br /> <br />10.1 Data Descriptio原创 2010-10-28 16:35:00 · 267 阅读 · 0 评论 -
luajit for windows
开vs2008 命令行窗口C:\>cd /d d:D:\>cd D:\c32\LuaJIT-2.0.3\srcD:\c32\LuaJIT-2.0.3\src>msvcbuild.batD:\c32\LuaJIT-2.0.3\src>luajitdofile("hi.lua")--------------------------------------原创 2014-03-28 10:26:43 · 413 阅读 · 0 评论