文档章节

LUA: lua基础.

SHIHUAMarryMe
 SHIHUAMarryMe
发布于 2017/04/05 15:21
字数 437
阅读 6
收藏 0

nil :它是一个类型且只有一个值nil.它的主要功能是区别于其他任何值.如果对一个全局变量赋值nil等同于删除它.

条件测试中: LUA把 零值(0) 和 空字符串("") 当为true.

 

Lua版本unpack():

function unpack(theTable, index)
index = index or 1;
if theTable[index] then
return theTable[index], unpack(theTable, index+1);
end;
end;

 

Lua版本iterator:

function iterator(theTable)
local i = 0;
return function()
i = i+1;
return theTable[i] end;
end;

tb = {10, 20, 30};
iter = iterator(tb);
while true do
local element = iter();
if element == nil then
break;
end;
print(element);
end;



output:
10
20
30

 

Lua范围for与iterator:

tb= {10, 20, 30};

function iterator(theTable)
local i = 0;
return function()
i = i + 1;
return theTable[i];
end;
end;

for value in iterator(tb) do
print(value);
end;

 

Lua版本具有复杂状态的iterator:

local iterator;

function allWords()
local state= {line = io.read(), pos = 1};
return iterator, state;
end;

function iterator(state)
while state.line do
local s, e = string.find(state.line, "%w+", state.pos);
if s then
state.pos = e + 1;
return string.sub(state.line, s, e);
else
state.line = io.read();
state.pos = 1;
end;
end;
return nil;
end;

local itr, sta = allWords();
print(itr(sta));

 

Lua版本协程:

function receive(prod)  --接受数据.
local status, value = coroutine.resume(prod);
return value;
end;


function send(x)  --发送数据.
coroutine.yield(x);
end;

function producer()  --生产者
return coroutine.create(function()
while true do
      local x = io.read();
	  send(x);
	  end
	      end)
		  end


function filter(prod) --过滤
return coroutine.create(function()  --创建一个协程
	for line = 1, math.huge do
	local x = receive(prod);
	x = string.format("%5d %s", line, x);
	send(x);
	end
   end)
  end

function consumer(prod)
while true do
local x = receive(prod)
io.write(x, "\n");
end
end

 

Lua版本协程iterator:

function permgen(array, size)
size = size or #array;
if size <= 1 then
 coroutine.yield(array);
 else
 for i=1, size do
array[size], array[i]  = array[i],array[size];
permgen(array, size-1);
array[size], array[i]  = array[i],array[size];
end
end
end

function printResult(array)
for index, value in ipairs(array) do
io.write(array[index], " ");
end
io.write("\n");
end

function permutations(array)
local co = coroutine.create(function() permgen(array) end)
return function()
local code, result = coroutine.resume(co);
return result;
end
end


for value in permutations({1, 2, 3}) do
printResult(value);
end

 

© 著作权归作者所有

共有 人打赏支持
上一篇: C#: iterator
SHIHUAMarryMe
粉丝 13
博文 164
码字总数 138212
作品 0
武汉
程序员
私信 提问
Cocos2d-Lua手游开发基础篇-何韬-专题视频课程

Cocos2d-Lua手游开发基础篇—62875人已学习 课程介绍 Cocos2d-Lua是一个开源的移动游戏框架,可以轻松运行在iOS、Android、Blackberry等操作系统中,使得开发低成本、高效率;一次制作,多终...

pkutao
2015/02/26
0
0
Tinywan/lua-nginx-redis

在线文档(Online documentation) 目录 Nginx 教程 (Nginx tutorial) Nginx编译安装 Nginx.conf详解和配置 Location 详解和配置 Nginx基础知识 Nginx高性能WEB服务器详解 Nginx高并发系统...

Tinywan
01/07
0
0
Lua学习笔记

注: 标题中带“Cocos”的为Lua结合Cocos的文章。 【基础模块】 Lua(1) ——Cocos之Code IDE入门指南 Lua(2) ——基础语法 Lua(3) ——Cocos之语法糖class Lua(4) ——基本库函数 Lua(5) ——...

shahdza
2015/10/08
0
0
游戏之中的粘合剂---Lua脚本语言

前言: 每当自己想要放弃的时候,可以告诉自己再多撑一天、一个星期、一个月,再多撑一年吧。你会发现拒绝退场的结果令人惊讶! --摘自短篇原创文学 --------------------------------------...

loving_forever_
2016/11/23
0
0
添加了 CAN 驱动的 Lua--LuaCan

关于 LuaCAN = Lua + CAN,给Lua解释器添加了CAN扩展,实现通过Lua语言操作CAN卡,进行CAN通讯的功能。使用这个工具,只要能用Lua语言打印HelloWorld以及实现一个 ∑功能的函数就行了。 使用...

小浣熊hhuc
2016/12/26
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

CockroachDB

百度云上的CockroachDB 云数据库 帮助文档 > 产品文档 > CockroachDB 云数据库 > 产品描述 开源NewSQL – CockroachDB在百度内部的应用与实践 嘉宾演讲视频及PPT回顾:http://suo.im/5bnORh ...

miaojiangmin
23分钟前
0
0
I2C EEPROM驱动实例分析

上篇分析了Linux Kernel中的I2C驱动框架,本篇举一个具体的I2C设备驱动(eeprom)来对I2C设备驱动有个实际的认识。 s3c24xx系列集成了一个基于I2C的eeprom设备at24cxx系列。at24cxx系列芯片包...

yepanl
25分钟前
1
0
spring mvc拦截器,实现统计http请求的后台运行时间

使用两种方式,实现拦截http请求的后台运行时间。 废话不多说直接上代码 /** * Http请求时间统计 * 拦截所有请求 */public class HttpRquestTimeInterceptor extends HandlerIntercepto...

兜兜毛毛
42分钟前
2
0
设计模式之工厂模式

本篇博文主要翻译这篇文章: https://www.journaldev.com/1392/factory-design-pattern-in-java 由于翻译水平有限,自认为许多地方翻译不恰当,欢迎各位给出宝贵的建议,建议大家去阅读原文。...

firepation
58分钟前
4
0

中国龙-扬科
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部