文档章节

LUA: lua基础.

SHIHUAMarryMe
 SHIHUAMarryMe
发布于 2017/04/05 15:21
字数 437
阅读 9
收藏 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
博文 162
码字总数 138435
作品 0
武汉
程序员
私信 提问
加载中

评论(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
2018/01/07
0
0
lua绑定C++对象系列一——基础知识

本文主要介绍lua绑定C++对象的原理和方法,并能在C/C++定义类和方法,在lua中创建C++类的句柄实例,像面向对象一样去使用C++类实例。为了便于大家理解,系列文章会从基础知识讲解,并通过多个...

osc_wme0cmft
2018/10/15
5
0
游戏之中的粘合剂---Lua脚本语言

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

loving_forever_
2016/11/23
0
0
使用Golang + lua实现一个值班机器人

我们在的项目组呢,有一项工作是,收邮件(很大程度上使用邮件是为了存个底),然后从我们的系统里边查一下相关信息,然后回复个邮件的工作。虽然工作量并不大,但是会把时间切的稀碎。为了拯...

连程
05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何用数据结构解释计算机系统 常用数据结构

详细:https://www.cnblogs.com/morui/p/10726864.html 数据结构(计算机存储、组织数据方式) 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元...

osc_rnx2cje5
15分钟前
23
0
黑客你咋这么牛掰,不屑用鼠标?

如需快速跳转,请戳以下蓝色字条 01 前情提要 02 有苦说得出 1、黑客开发绝大多数工具是没有图形化界面的 2、命令行更有助于批量操作 3、图形化界面消耗系统资源量大,增加计算机性能负担 4、...

osc_m6gaz63w
16分钟前
13
0
计算机网络TCP/IP模型复习笔记(随时补充)

看到一篇大佬的博客,刚好前段时间也有简单了解了一点计算机网络的TCP/IP,就顺便总结一下。 大佬文章链接: https://blog.csdn.net/ThinkWon/article/details/104903925 计算机网络的自己理...

osc_boqyoaed
18分钟前
17
0
IDEA使用技巧-->查看类的继承关系图

IDEA使用技巧-->查看类的继承关系图 简单实用(很实用) 转自 ☞https://www.cnblogs.com/deng-cc/p/6927447.html 最近忙,有用的直接拿来给大家分享,但凡分享的都是我亲测有效的!...

宇宝
19分钟前
21
0
浏览器同源政策及其规避方法

自己以思维导图的形式梳理了一遍 浏览器同源政策及其规避方法

酒窝yun过去了
19分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部