lua中其实是没有类的,有的只是表(table)

lua查找一个表元素时的规则,其实就是如下3个步骤:

1.在表中查找,如果找到,返回该元素,找不到则往下看;

2.判断该表是否有元表,如果没有元表,返回nil,有元表则往下看;

3.判断元表有没有__index方法,如果__index方法为nil,则返回nil;如果__index方法是一个表,则重复1、2、3;如果__index方法是一个函数,则返回该函数的返回值

一个简单的lua继承例子:

 father = {
house=
}
father.__index = father -- 把father的__index方法指向自己 son = {
car=
}
setmetatable(son, father)
print(son.house)

lua继承的更多相关文章

  1. 对lua继承中self.__index = self的释疑

    首先看看从lua表中查找一个键时的流程: -- 当从表t中查找键k时,lua处理如下: -- 1.t中是否有k,有则直接返回值,否则第2步 -- 2.t是否有元表, 无则返回nil, 有则第3步 -- ...

  2. <8>Lua继承

    模拟继承方式 代码: --继承 -- 基类:Person local Person = {} --基类的表 -- 方法 function Person:test() print("Perso ...

  3. cocos2dx开发中的lua继承与覆盖C++方法

    http://www.litefeel.com/lua-override-userdata/

  4. Lua继承userdata

    http://blog.csdn.net/mywcyfl/article/details/37765751 http://blog.csdn.net/teng_ontheway/article/det ...

  5. 手游开发之lua的class函数详解

    众所周知,lua没有类这个概念但其通过table实现了面向对象的“类”.在cocos2dx引擎下提供了class(className, ...)函数方法名,因为在脚本开发中这个接口基本都会用来创建一个 ...

  6. class() 高级用法 -- lua

    class() 高级用法 class() 除了定义纯 Lua 类之外,还可以从 C++ 对象继承类. 比如需要创建一个工具栏,并在添加按钮时自动排列已有的按钮,那么我们可以使用如下的代码: -- 从 ...

  7. lua面向对象编程 《lua程序设计》 16章 笔记

    Lua中的table就是一种对象,即它拥有状态.拥有独立于其值的标识(self).table与对象一样具有独立于创建者和创建地的征集周期 什么叫对象拥有独立的生命周期? Account = {bala ...

  8. Lua表(table)的个人总结

    1.表的简介和构造 table是个很强大且神奇的东西,又可以作为数组和字典,又可以当作对象,设置module.它是由数组和哈希表结合的实现的.他的key可以是除nil以外任意类型的值,key为整数时, ...

  9. `cocos2dx非完整` 日志模块 增量更新

    在上一篇文章中,说到了"流程"的由来,以及我对流程的使用. 这一片就是对流程的应用.前一篇文章中说到了三条流程 check_log_measure, check_env_measu ...

随机推荐

  1. linux+python+robot+jenkins

    1.安装python 安装devtoolset # yum groupinstall “Development tools” 安装编译Python需要的包 # yum -y install zlib- ...

  2. 根据枚举获取枚举的Description特性值

    首先定义一个枚举:两个值:已确认.未确认. public enum ConfirmStatusEnum { [Description("未确认")] unconfirmed = , ...

  3. Python元类__prepare__方法深入理解

    学习元类的时候,对__prepare__不是很理解,书上讲解的也不是很详细,最后通过查看stackoverflow的一些帖子对该方法有了一些理解,记录如下: 先看代码: class member_ta ...

  4. js 三大家族之offset

    JS中的offset家族: 一.offsetWidth与offsetHeight: 获取的是元素的实际宽高 = width + border + padding 注意点: 1.可以获取行内及内嵌的宽高 ...

  5. 使用PHP并发执行任务–curl_multi应用

    使用PHP并发执行任务–curl_multi应用 原网址:http://lampblog.org/category/phpdev

  6. SPOJ - AMR11

    A Thanks a lot for helping Harry Potter in finding the Sorcerer's Stone of Immortality in October. D ...

  7. 破解MyEclipse

  8. <a>标签深入讲解

    标签中 href 和 onclick 的区别,以及href="javascript:xxx(this);"与onclick="xxx(this);" 传递thi ...

  9. esper(4-4)-OverLapping Context

    语法 create context context_name initiated [by] initiating_condition terminated [by] terminating_condi ...

  10. VUE-CLI 设置页面title

    router > index.js { path: '/worklist', name: 'worklist', component: worklist, meta: {title:'维修工列表 ...