2019独角兽企业重金招聘Python工程师标准>>>

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 dolocal x = io.read();send(x);endend)endfunction filter(prod) --过滤
return coroutine.create(function()  --创建一个协程for line = 1, math.huge dolocal x = receive(prod);x = string.format("%5d %s", line, x);send(x);endend)endfunction 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 thencoroutine.yield(array);elsefor 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
endfunction printResult(array)
for index, value in ipairs(array) do
io.write(array[index], " ");
end
io.write("\n");
endfunction permutations(array)
local co = coroutine.create(function() permgen(array) end)
return function()
local code, result = coroutine.resume(co);
return result;
end
endfor value in permutations({1, 2, 3}) do
printResult(value);
end

转载于:https://my.oschina.net/SHIHUAMarryMe/blog/873420

LUA: lua基础.相关推荐

  1. [Lua语言编程]Lua语言基础知识

    文章目录 `Lua` `Lua`语言的起源 `Lua` 特性 `Lua下载` Linux 系统上安装 Mac OS X 系统上安装 Window 系统上安装 `Lua` `Lua`语言语法 `Lua` ...

  2. Lua语言基础入门 (Lua学习一)

    Lua语言快速入门 这篇博客主要是简单的讲解一下Lua的基础知识,涉及的东西不是很深,提供一些学习的思路,对具体的技术不展开介绍,网上资料很多写的都比我好,仅仅为了使用Lua,而不是做基于Lua的项目 ...

  3. Lua === Lua 十分钟基础入门上手

    Lua维基百科 Lua的目标是成为一个很容易嵌入到其他语言中使用的语言: 很多程序员使用Lua作为自己的嵌入式脚本语言,实现可配置性,可扩展性: 轻量级语言,体积小速度启动快,只包含一个精简的核心和基 ...

  4. Lua语法基础(1)---简介、基本数据类型、表达式

    我觉得我已经陷入了一个坑内.因为,安装了Lua和SublimeText3编辑器之后,怎么使自己编写的lua代码在untiy内运行起来,是个我完全不了解的机制.先放一放吧.首先,来回顾一下Lua的语法基 ...

  5. JavaScript、Lua语言基础、电脑脚本、手机免ROOT免越狱脚本开发免费视频教程

    JavaScript基础教程:https://www.bilibili.com/video/BV1YW411T7GX Lua基础教程:https://www.bilibili.com/video/BV ...

  6. 【Lua编程基础】实测Lua中点和冒号的区别

    欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群 Lua中成员函数的定义应该约定一种形式而不要点和冒号同时使用 一:在lua中面向对象编程的时候都要用冒号 使用冒号声明函数的时 ...

  7. 【Lua 入门基础篇(七)】表模块与包

    文章目录 一.table表 1. 表的构造 2. 表的操作 (1) concat(连接) (2) insert(插入) (3) remove(移除) (4) sort(排序) (5) maxn(最大值 ...

  8. 【Lua编程基础】Lua编程SciTe和SublimeI的配置和使用

    欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群 1.SciTe配置lua环境 运行前设置Language/lua F5运行lua文件的时候会提示找不到指定文件就需要进行如下配 ...

  9. Lua 面向对象基础-类和对象(一)

    目录 1. lua中创建对象 2.lua中定义类的思路 3.元表的概念 4.类的定义和实例化 5. 重写类的方法 lua是一门面向过程的脚本语言,lua语言对于事物.结构通通描述为 table,而类和 ...

最新文章

  1. HarmonyOS UI开发 StackLayout(堆栈布局) 的使用
  2. Wake-On-LAN待机或休眠模式中唤醒
  3. CSS3绘制圆角矩形的简单示例
  4. 面向对象 面向你(二)
  5. MySQL 计算两个时间的差值
  6. “一切即代码”究竟意味着什么?
  7. next主题设定代码高亮格式
  8. Oracle 数字与空值的排序问题
  9. 【GCC调试程序C语言问题】对‘ceil’未定义的引用/已经包含头文件仍然提示未定义的引用
  10. 小米笔记本怎么进入pe系统?
  11. windows认证密码抓取
  12. VRRP在城域网中的应用
  13. java根据ip地址获取详细地域信息
  14. react 调用webIm
  15. Mybatis 框架CRUD的操作 案例
  16. 2022年大数据技能大赛国赛(模块A,B)
  17. 亚马逊广告api v2版php扩展库
  18. 【Sprint3冲刺之前】敏捷团队绩效考核(刘铸辉)
  19. 计算机cds,CDS
  20. ROS自定义msg类型及使用

热门文章

  1. IOS - IPhone或IPAD,如何恢复出厂操作系统?
  2. MySQL-库的操作
  3. CPU,MPU,MCU,SOC,SOPC联系与差别
  4. 关于localStorage和sessionStorage存储用法的一些细节说明----------localStorage和sessionStorage存储必须字符串化...
  5. Docker入门(CentOS7)
  6. 我的Java设计模式-原型模式
  7. Python__模拟实现一个ATM+购物商城程序
  8. Excel VBA(宏):添加宏
  9. 配置hibernate根据实体类自动建表功能
  10. UML学习-活动图创建