文档章节

LUA: lua基础.

SHIHUAMarryMe
 SHIHUAMarryMe
发布于 2017/04/05 15:21
字数 437
阅读 3
收藏 0
点赞 0
评论 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
博文 165
码字总数 138772
作品 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
Cocos2d-x 脚本语言Lua的使用

前面几篇博客已经把Lua的相关基础知识介绍了,本篇博客就来介绍一下,如何在Cocos2d-x项目中使用Lua这门脚本语言进行开发。由于笔者使用的时Mac系统,所以演示给大家的时在XCode当中运行我们...

tropicofcancer9
04/19
0
0
NeoLua-1.0.0-beta 发布,Lua 的 .NET 实现

NeoLua-1.0.0-beta 发布,此版本创建了新的基础库,结合了所有特性,包括 .NET 4.5,Windows 存储应用和 Windows Phone 8.1。NeoLua 将不再支持 .NET Framework 4.0。欢迎各种反馈,谢谢支持...

oschina
2015/05/10
892
0
Cocos学习笔记

说明: (1)基于cocos2dx2.2.3,使用C++语言,在Visual Studio 2010进行开发的。 (2)基于cocos2dx3.x ,使用C++语言,在Visual Studio 2013 与 Xcode进行开发的。 (3)基于Cocos Code ID...

shahdza
2014/08/12
0
0
hhucqian/LuaCan

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

hhucqian
2016/12/26
0
0
Lua基础之语法

目录:1.输出2.注释3.控制语句4.赋值语句5.运算符6.关键字7.变量类型8.其他 原文地址http://blog.csdn.net/dingkun520wy/article/details/49930543 1.输出 print("Hello world") 2.注释 单行...

乐逍遥jun
2016/02/22
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
9
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0
分布式事务常见的解决方案

随着互联网的发展,越来越多的多服务相互之间的调用,这时候就产生了一个问题,在单项目情况下很容易实现的事务控制(通过数据库的acid控制),变得不那么容易。 这时候就产生了多种方案: ...

小海bug
昨天
3
0
python从零学——scrapy初体验

python从零学——scrapy初体验 近日因为一些事情,需要从网上爬取一些东西,故而想通过使用爬虫来顺便学习下强大的python。现将一些学习中遇到的问题记录下来,以便日后查询 1. 开发环境的准...

咾咔叽
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部