lua入门
haobaworenle
这个作者很懒,什么都没留下…
展开
-
Lua的rawset和rawget浅析
定义raw:原始的,未加工的。 rawset/rawget:对“原始的”表进行直接的赋值/取值操作。 所以,raw方法就是忽略table对应的metatable,绕过metatable的行为约束,强制对原始表进行一次原始的操作,也就是一次不考虑元表的简单更新。另外,一次原始的操作其实并不会加速代码执行的速度,效率一样。格式rawset(table, key, value)rawget(table转载 2017-04-20 15:41:12 · 11591 阅读 · 0 评论 -
Lua之coroutine基础
一、基本环境:Microsoft Windows XP/Service Pack 2Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio二、 coroutine的接口:(1) coroutine.create()(2) coroutine.resume()(3) coroutine.yield()(4) co转载 2017-04-20 19:44:47 · 278 阅读 · 0 评论 -
require时报错:loop or previous error loading module "xxx"
语言:Lua调用方法:require("xxx")报错:lua: .\xxx.lua:1: loop or previous error loading module 'xxx'原因:(1)loop error,循环调用。也就是被require的xxx文件中,模块内部又调用该模块,导致死循环。方法:修改文件名或者模块名,总之把循环解开。(2)previous err原创 2017-05-26 10:18:20 · 14457 阅读 · 0 评论 -
lua使用优化建议
1.使用局部变量local这是最基础也是最有用的策略,虽然使用全局变量并不能完全避免,但还是应该尽量避免,取而代之使用局部变量即local。这里的局部变量也包括函数function,因为在Lua里函数也是一个变量。局部变量的存取会更快,而且在生命周期之外就会释放掉。使用全局变量CCX = display.contentCenterX --global转载 2017-04-26 15:43:13 · 705 阅读 · 0 评论 -
Lua元表和元方法(转载)
前言元表对应的英文是metatable,元方法是metamethod。我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了“+”符号,就可以进行类的加法运算。在Lua中也有这个道理,两个table类型的变量,你是无法直接进行“+”操作的,如果你定义了一个指定的函数,就可以进行了。那这篇博文就是主要讲的如何定义这个指定的函数,这个指定的函数是什么?希望对学习Lua的朋友有帮助。转载 2017-06-02 18:23:00 · 511 阅读 · 0 评论 -
lua中获取table长度的问题
官方文档是这么描述#的:取长度操作符写作一元操作 #。 字符串的长度是它的字节数(就是以一个字符一个字节计算的字符串长度)。table t 的长度被定义成一个整数下标 n 。 它满足 t[n] 不是 nil 而 t[n+1] 为 nil; 此外,如果 t[1] 为 nil ,n 就可能是零。 对于常规的数组,里面从 1 到 n 放着一些非空的值的时候, 它的长度就精确的为 n,转载 2017-07-29 14:01:23 · 5648 阅读 · 0 评论 -
lua 表索引[]和.的使用顺序对结果的影响
测试代码:a = {a = {a=1,b=2,},b = {a = 3,b = 4,}}b = {a = "a",b = "b",}DBG(tostring(a.b["a"])) --> 3DBG(tostring(a[b["a"]]["a"])) --> 1DBG(tostring(a.b.a)) -->原创 2017-08-04 12:09:23 · 1286 阅读 · 0 评论 -
lua循环过程中删除pairs(table)的table会怎么样
lua循环中的for-i方式跳过,此处只讲for-i,v方式,也就是pairs/ipairs方式。例子,我需要利用for-pairs(table)循环遍历table中的元素,在遍历过程中,每次处理完一个元素后,我会按需决定是否删除掉table中这个元素。那么问题来了,删除元素之后是否改变table的结构,for循环是否能继续进行下去?下面进行测试。测试代码:测试结果:原创 2017-07-28 16:10:17 · 6526 阅读 · 0 评论