-- local 局部
-- local表=全局表,是同一个表,这主要是由于lua的表机制是匿名的,相当于函数的指针,local foo = foo,
-- 即使本地foo没有在全局_G注册,还是引用的是同一个表。当没有变量指向表的时候,垃圾回收器会销毁这个匿名表。
-- 而local变量则是创建一个新的变量,遵守子作用域覆盖父作用域的规则。
local c={}
function c:test()
self._m="xxxx"
end -- 1:冒号定义或调用方法,自带self参数,多余参数被遗弃
local b={}
--[[
c.test(b)
print(b._m)
print(c._m)
--输出 xxxx nil
]]-- c:test(b)
print(b._m)
print(c._m)
--输出nil xxxx -- 2:定义的参数个数和传的参数个数无关
function tfun(x,y)
print(x,y)
end
tfun(1)
tfun(2,3)
tfun(4,5,6)
-- 1 nil
-- 2 3
-- 4 5 -- 3:单参数可不带括号调用函数
print "end" -- 4: a or b 当a = nil或false时, a or b这个逻辑判断表达式的值就是b, 当a不为false或者nil时, 那么这个表达式的值就是a.
print(false or 1)
-- 1
print(0 or false)
-- 0
print(nil or "hello")
-- hello --5 :当多值函数后面再有表达式时, 多值函数就只返回第一个值, 后面的值被抛弃.
print(string.find("hello","llo"), "hell") -- 这样的话string.find("hello","llo")只返回了第一个结果3. 5被抛弃了.
-- 3 hell
tab={9,6,3}
print(#tab)
for i=1,#tab do
print(i,tab[i])
i = i+2 -- 并不会改变for循环中的i数值
end
 
-- 7:

function square(iteratorMaxCount,currentNumber)
print("square" , currentNumber)
if currentNumber<iteratorMaxCount
then
currentNumber = currentNumber+1
return currentNumber, currentNumber*currentNumber
end
end
-- square 方法多次调用,且传参不带括号
for i,n in square,3,0
do
print(i,n)
end
 
--[示例1.]--
local tt ={ [1] = "test3", [4] = "test4", [5] = "test5"}
for i,v in pairs(tt) do -- 输出 "test4" "test3" "test5"
print( tt[i] )
end
 
for i,v in ipairs(tt) do -- 输出 "test3" k=2时断开
print( tt[i] )
end
 
-- [[示例2.]] --
tbl = {"alpha", "beta", [3] = "uno", ["two"] = "dos"}
for i,v in ipairs(tbl) do --输出前三个
print( tbl[i] )
end
 
for i,v in pairs(tbl) do --全部输出
print( tbl[i] )
end
--[示例3.]--
-- pairs是按物理顺序遍历的,而用[]时表是按哈希构造的,物理上是乱的;直接写1,2,3时表是按物理顺序构造的
tableTest = { [1] = 1, [2] = 2, [3] = 3, [4] = 4 }
for key, value in pairs(tableTest ) do
print(key..value)
end
-- 输出:11 22 44 33
 
tableTest = { 1, 2, 3, 4 }
for key, value in pairs(tableTest ) do
print(key..value)
end
-- 输出:11 22 33 44

  

lua 基础 之 坑一样的地方的更多相关文章

  1. Lua 基础

    Lua 5.3 的中文手册, http://cloudwu.github.io/lua53doc 在线浏览 --第一部分 -- 两个横线开始单行的注释 --[[ 加上两个[和]表示 多行的注释. -- ...

  2. 入CTF坑必不可少的地方-保持更新

    0x00 前言 没有交易,没有买卖,没有排名,纯属分享:p 0x01 CTF介绍 CTF领域指南CTF介绍大全CTF赛事预告 0x02 CTF练习 BIN:reversingpwnableexploi ...

  3. 在redis一致性hash(shard)中使用lua脚本的坑

    redis 2.8之前的版本,为了实现支持巨量数据缓存或者持久化,一般需要通过redis sharding模式来实现redis集群,普遍大家使用的是twitter开源的Twemproxy. twemp ...

  4. Lua基础 函数(一)

    转自: http://blog.csdn.net/wzzfeitian/article/details/8653101 在Lua中,函数是对语句和表达式进行抽象的主要方法.既可以用来处理一些特殊的工作 ...

  5. Lua基础之MetaTable(6)

    Lua基础之MetaTable(6) 转载地址:http://nova-fusion.com/2011/06/30/lua-metatables-tutorial/ 关于MetaTable的补充:ht ...

  6. Step By Step(Lua基础知识)

    Step By Step(Lua基础知识) 一.基础知识:    1. 第一个程序和函数:    在目前这个学习阶段,运行Lua程序最好的方式就是通过Lua自带的解释器程序,如:    /> l ...

  7. lua中的坑

    在工作中使用lua也有一年了,代码也写了不少,踩过不少坑,这里记录一下. table.sort table.sort是lua自带的排序函数,数据量小时,也还是不错的.不过要注意你传入的compare函 ...

  8. Lua 基础之Weak Table(5)

    Lua垃圾收集策略 Lua自动进行内存的管理.程序只能创建对象,而没有执行删除对象的函数.通过使用垃圾收集技术,Lua会自动删除那些失效的对象,也就是引用为0 的对象.但是呢?有些对象,引用没有指向它 ...

  9. lua基础(一)

    参考链接: http://blog.csdn.net/lyh916/article/details/49719697 一.注释 --这是行注释 --[[ 这是块注释 这是块注释 这是块注释 --]] ...

随机推荐

  1. Codeforces 1027F Session in BSU - 并查集

    题目传送门 传送门I 传送门II 传送门III 题目大意 有$n​$门科目有考试,第$i​$门科目有两场考试,时间分别在$a_i, b_i\ \ (a_i < b_i)​$,要求每门科目至少参加 ...

  2. dom节点相关问题

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. spring boot+自定义 AOP 实现全局校验

    最近公司重构项目,重构为最热的微服务框架 spring boot, 重构的时候遇到几个可以统一处理的问题,也是项目中经常遇到,列如:统一校验参数,统一捕获异常... 仅凭代码 去控制参数的校验,有时候 ...

  4. Maven的基本概念

    一.Maven的基本概念' Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理. 1.1 ...

  5. jquery.validator 手机号验证

    1.在input中加上mobile="true",maxlength="11" <label class="w170 control-label ...

  6. 详解ASP.NET Core API 的Get和Post请求使用方式

    上一篇文章帮助大家解决问题不彻底导致博友使用的时候还是遇到一些问题,欢迎一起讨论.所以下面重点详细讲解我们常用的Get和Post请求( 以.net core2.2的Http[Verb]为方向 ,推荐该 ...

  7. Foxmail设置IMAP和STMP服务器

  8. retina屏 适配问题

    物理像素(physical pixel) 一个物理像素是显示器(手机屏幕)上最小的物理显示单元,在操作系统的调度下,每一个设备像素都有自己的颜色值和亮度值. 设备独立像素(density-indepe ...

  9. vue案例todolist备忘录

    项目效果:https://cinderellastory.github.io/todolist/dist/index.html#/ 项目链接:https://github.com/Cinderella ...

  10. 跟踪mqttv3源码(一)

    Spring整合MQTT pom.xml <!-- MQTT消息队列 --> <dependency> <groupId>org.eclipse.paho</ ...