
lua
文章平均质量分 54
yifan_fishpond
学海无涯
展开
-
lua元方法__index,对table进行初始化,设置默认值
当访问一个table不存在的索引时,lua解释器回去查找table中是否有__index 这个元方法,如果存在返回__index 最终的调用结果,如果不存在那么就返回一个空值nil。当创建一个新的table时,默认没有元表,对不存在的索引访问直接返回nil,可以通过设置元表,元方法使其调用__index返回nil的情况:local t = {}print(t[2]) :--返回nil原创 2015-11-10 17:23:31 · 3162 阅读 · 0 评论 -
lua 元方法__newindex,实现只读的table
lua中__newindex的调用机制跟__index (关于__index的用法参考上一篇博客点击打开链接)的调用机制是一样的,当访问table中一个不存在的key,并对其赋值的时候,lua解释器会查找__newindex元方法,如果存在,调用该方法,如果不存在,直接对原table索引进行赋值操作。local t = {}local prototype = {}local mt = {_原创 2015-11-10 17:54:35 · 1596 阅读 · 0 评论 -
lua 继承,使用元方法__index
lua中table 可以作为对象,一个类,一个对象是一个table,对象中所有的变量和函数都存放在table中。实际上lua库中的方法也存在table中(print、tostring、tonumber等都存在_G这个全局的table中)。上篇文章中提到的__index的使用,当访问一个table 不存在的索引时,lua解释器回去查找这个table是否存在__index这个元方法,如果找到就调用__原创 2015-11-13 15:15:19 · 539 阅读 · 0 评论 -
lua 中点号与冒号的区别
曾经遇到面试题目,面试官给的题目大概是这样, a 是一个table ,请你说出a.foo() 与a:foo() 的区别。我也只能呵呵了,因为我根本就不会。因为工作中对lua 根本就是看看代码就开始埋头敲代码了。 看下面代码: A = {count=0}function A:inscrease() self.count = self.count + 1endfunction A:ge原创 2015-11-13 16:47:57 · 961 阅读 · 0 评论 -
lua 中 lua_gettable的使用 C++ 调用lua 读取table
尝试着从C中读取lua中的table。 lua中提供lua_gettable 的C接口。例如我们要从a.lua中读取一个全局变量 background--=================-- file name :a.lua--================background = {r=0,g=0,b=255}先写一个读取table值的接口void getRGBValue原创 2015-11-17 17:41:53 · 2403 阅读 · 1 评论 -
用lua 下载文件小示例
本文是自己闲暇之余用来学习lua的小笔记,篇幅比较短,有涉及到的例如HTTP网络协议,不细说。本文演示的是通过HTTP 下载个远程文件,需要用到LuaSocket 库。要下载一个文件,必须先打开一个到网点的链接,然后发送下载该文件的请求,并接收保存数据块,最后关闭链接。首先,先加载luaSocket库require "socket"2.定义主机和下载文件名host = "www原创 2015-11-02 17:18:12 · 10346 阅读 · 3 评论