文档章节

LUA: lua基础.

SHIHUAMarryMe
 SHIHUAMarryMe
发布于 2017/04/05 15:21
字数 437
阅读 4
收藏 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

 

© 著作权归作者所有

共有 人打赏支持
SHIHUAMarryMe
粉丝 12
博文 162
码字总数 136638
作品 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
Tinywan/lua-nginx-redis

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

Tinywan
01/07
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
lua和c语言的交互详解(真的是非常详细)

前言 对于Lua的基础总结总算告一段落了,从这篇博文开始,我们才真正的进入Lua的世界,一个无聊而又有趣的世界。来吧。 Lua语言是一种嵌入式语言,它本身的威力有限;当Lua遇见了C,那它就展...

徐学良
2015/12/31
240
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之 明确责任 观察者模式 状态模式 责任链模式

观察者模式是任务分发的一种模式。 如果认为我们设计的系统的各个模块(或子系统)的最终目的是完成共同任务,那么这个任务如何分配到多个模块的就是我们遇到的第一个问题。简单设计场合我们...

backbye
15分钟前
2
0
14-利用思维导图梳理JavaSE-大汇总

14-利用思维导图梳理JavaSE-Java基础知识大汇总 主要内容 1.对象入门 2.一切都是对象 3.程序流程控制 4.初始化和消除 5.权限访问控制 6.复用类 7.多态 8.接口与抽象类 9.内部类 10.容器 11.异...

飞鱼说编程
51分钟前
5
0
利用Lombok编写优雅的spring依赖注入代码,去掉繁人的@Autowired

大家平时使用spring依赖注入,都是怎么写的? @Servicepublic class OrderService { @Autowired private UserService userService;} 是不是很熟悉的感觉?但是呢 如果你用...

HeyS1
58分钟前
25
0
IBATIS 写BLOB字段遇到的问题

1、 首先遇到的配置问题,通过设置typeHandler 来支持写入。接下来由此引出了事务的问题。 <typeHandler jdbcType="BLOB" javaType="[B" callback="org.springframework.orm.ibatis.support....

echo-neo
今天
1
0
37. Sudoku Solver

Description tags: backtrack,hash table difficulty: hard Write a program to solve a Sudoku puzzle by filling the empty cells.A sudoku solution must satisfy all of the following......

52iSilence7
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部