-- 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. 微博Rss邮箱推送系统

    微博Rss邮箱推送

  2. lsyncd+rsync配置图片资源双向同步

    需求:为保证国内外图片加载速度,国内请求上传图片资源地址阿里云oss,国外请求上传图片资源地址aws s3,为保证图片资源的一致性,需定时进行oss和s3图片双向同步 调研方案:由于之前配置过inot ...

  3. topcoder srm 640 div1

    problem1 link 首先使用两个端点颜色不同的边进行连通.答案是$n-1-m$.其中$m$是联通分量的个数. problem2 link 首先构造一个最小割的模型.左边的$n_{1}$个点与源 ...

  4. PO、POJO、BO、DTO、VO之间的区别(转)

    PO:persistent object持久对象 1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录. 2 .在hibernate持久化框架中与in ...

  5. re模块的应用

    import re # 正则表达式中的转义 : # '\(' 表示匹配小括号 # [()+*?/$.] 在字符组中一些特殊的字符会现出原形 # 所有的 \w \d \s(\n,\t, ) \W \D ...

  6. Discuz3.2与Java 项目整合单点登陆

    JAVA WEB项目与Discuz 论坛整合的详细步骤完全版目前未有看到,最近遇到有人在问,想到这个整个不是一时半会也解释不清楚.便把整个整合过程以及后续碰到的问题解决方案写下,以供参考. 原理 Di ...

  7. 7、Dockerfile详解

    参考: https://www.imooc.com/article/details/id/25229 https://www.cnblogs.com/panwenbin-logs/p/8007348. ...

  8. 基于SVD的图像压缩

    算法简介 算法实现 我只是简单处理了一下图像的灰度值,如果要处理RGB值的话,就需要分别进行SVD分解,最后再合起来即可. import numpy as np from PIL import Ima ...

  9. MapReduce实现PageRank算法(邻接矩阵法)

    前言 之前写过稀疏图的实现方法,这次写用矩阵存储数据的算法实现,只要会矩阵相乘的话,实现这个就很简单了.如果有不懂的可以先看一下下面两篇随笔. MapReduce实现PageRank算法(稀疏图法) ...

  10. mac 使用iTerm2快捷登录远程服务器

    mac 使用iTerm2快捷登录远程服务器 正常使用ssh登录服务器: ssh -p port user@host user@host's password: 输入端口,用户名,服务器ip地址后,还需 ...