上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 28 下一页
摘要: 一个关于协同程序的经典示例是“生产者-消费者”问题。这其中涉及到两个函数,一个函数不断地产生值(比如从一个文件中读取值),另一个则不断地消费这些值(比如将这些值写到另一个文件)。通常,这两个函数大致是这样的: 这里有一个问题是如何将send与receive匹配起来。这是一个典型的“谁具有主循环(wh 阅读全文
posted @ 2016-07-19 18:33 月光诗人 阅读(1412) 评论(0) 推荐(0) 编辑
摘要: 协同程序(coroutine)与线程(thread)差不多,也就是一条执行序列,拥有自己独立的栈、局部变量和指令指针,同时又与其他协同程序共享全局变量和其他大部分东西。从概念上讲线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作地运行。就是说,一个具有 阅读全文
posted @ 2016-07-19 17:56 月光诗人 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 本章将介绍如何编写适用于泛型for的迭代其(Iterator)。7.1 迭代器与closurehttp://www.cnblogs.com/moonlightpoet/p/5685275.html7.2 泛型for的语义泛型for在循环过程内部保存了迭代器函数。实际上它保存着3个值:一个迭代器函数、 阅读全文
posted @ 2016-07-19 16:27 月光诗人 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 所谓“迭代器”就是一种可以遍历(iterate over)一种极和中所有元素的机制。在Lua中,通常将迭代其表示为函数。每调用一次函数,即返回集合中的“下一个”元素。每个迭代器都需要在每次成功调用之间保持一种状态,这样才能知道它所在的位置及如何步进到下一个位置。closure对于这类人无提供了极佳的 阅读全文
posted @ 2016-07-19 16:17 月光诗人 阅读(822) 评论(0) 推荐(0) 编辑
摘要: 在Lua中,函数是一种“第一类值(First-Class Value)”,它们具有特定的词法域(Lexical Scoping)。“词法域”:函数可以潜逃在另一个函数中,内部的函数可以访问外部函数中的变量。它允许Lua在应用各种函数式语言(functional-language)中的强大编程技术。L 阅读全文
posted @ 2016-07-19 15:38 月光诗人 阅读(181) 评论(0) 推荐(0) 编辑
摘要: Lua支持“尾调用消除(tail-call elimination)”。尾调用(tail call):当一个函数调用是另一个函数的最后一个动作时,该调用才算是一条“尾调用”。例如,下面的代码就是一条“尾调用”: 也就是说,当f调用完g之后就再无其他事情可做了。因此在这种情况下,程序就不需要返回那个“ 阅读全文
posted @ 2016-07-19 15:37 月光诗人 阅读(3944) 评论(0) 推荐(0) 编辑
摘要: 词法域:若将一个函数写在另一个函数之内,那么这个位于内部的函数便可以访问外部函数中的局部变量,这项特征称之为“词法域”。例:假设有一个学生姓名的列表和一个对应于没个姓名的年级列表,需要根据每个学生的年级来对他们的姓名进行排序(由高到低)。可以这么做: 现在假设单独创建一个函数来做这项工作: 上例中有 阅读全文
posted @ 2016-07-19 15:00 月光诗人 阅读(3486) 评论(0) 推荐(0) 编辑
摘要: Lua为面向对象式的调用也提供了一种特殊的语法——冒号操作符。表达式o.foo(o, x)的另一种写法是o:foo(x),冒号操作符是调用o.foo时将o隐含地作为函数的第一个参数。Lua可以调用C语言编写的函数。5.1 多重返回值(multiple results)Lua允许函数返回多个结果。Lu 阅读全文
posted @ 2016-07-18 17:33 月光诗人 阅读(289) 评论(0) 推荐(0) 编辑
摘要: Lua中的常规语句包括:赋值、控制结构和过程调用。Lua还支持一些不太常见的语句,如:多重赋值(multiple assignment) 和 局部变量声明。4.1 赋值Lua允许“多重赋值”,也就是一下子将多个值賦给多个变量。每个值或每个变量之间以都好分隔。例如:a, b = 10, 2*x赋值后, 阅读全文
posted @ 2016-07-18 16:50 月光诗人 阅读(291) 评论(0) 推荐(0) 编辑
摘要: Lua提供了一组传统的、小巧的控制结构,包括用于条件执行的if,用于迭代的while、repeat和for。所有的控制结构都有意个显式的终止符:if、for和while以end作为结尾,repeat以until作为结尾。1. if then else 若要编写嵌套的if,可以使用elseif。 由于 阅读全文
posted @ 2016-07-18 16:47 月光诗人 阅读(900) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 28 下一页