lua面向对象详解(1)

原创 2013年12月01日 22:20:04

项目组有个很好的习惯,每个礼拜都开展技术交流活动,要求由其中一个同事作为主讲人,以该主讲人所擅长的技术方面为主题,进行交流。收到这个任务已经月余,但最近实在太忙,只得趁周末准备一下。学习lua已经是很久远的事情了,虽然每天都在运用,而且应该说运用上还是挺溜的,但毕竟运用自如与以简易明了的语言表达出来还是差距挺大,有些东西虽然理解但要表达出来还是挺有难度,再加上时间紧迫,这里就当时抛砖引玉吧,希望大牛们多多指点,有纰漏不对之处,还请指正。

本人认为,要了解lua的面向对象,需要从三个方面下手:table、元表与元方法、面向对象。

一、lua的table

讲到lua的面向对象,则首先就要了解一下lua中的table。

table是什么?

table是lua中的数据结构机制,用table来实现关联数组,可以表示普通数组、符号表、集合、记录、队列及其他数据结构,也可以来表示模块、包、对象。

如:

localt1 = {1,3,5,7,9}  表示5个数字元素的数组

localtt = {'a','b','c','d'}

fork,v in pairs(tt) do

   print(k,v)

end

可以看到打印为

1   a

2   b

3   c

4   d

其中for k,v in pairs(tt) do 表示循环变量tt中的元素,pairs为一种table迭代器,返回元素的键和值。可知,默认情况下(即不指定键的情况下)table的索引是从1开始的(这和c++的数组下标从0开始有很大区别),且会自动递增,对于没有初始化的元素,索引结构都为nil。所以,lua将nil作为界定数组结尾的标志。

localt1 = {1,2,3,4,5,6}

t1[4]= nil

fork,v in ipairs(t1) do

    print(k,v)

end

输出为

1   1

2   2

3   3

虽然存在t1[5] = 5 和 t1[6] = 6 两个元素,但t1[4]为nil,则lua认为这个数组到索引3就结束了,但用户仍可用t1[5]去索引访问这个元素。

ipairs与pairs类似,但ipairs为从下标1开始依次递增索引数字索引的数组的迭代器。pairs则会无序索引table中的所有元素,包括字符索引和函数等。

localt2 = {1,2,abc = 5,4}

fork,v in ipairs(t2) do

   print(k , v)

end

输出为

1   1

2   2

3   4

中间虽然有一个字符串索引“abc”,但是后面的没有指定索引的元素会继续递增数字索引。

table中可以存储值(数字,字符串等)、函数(地址),也可以存储table。

table 既不是值,也不是变量,而是对象。请记住这句非常重要的话!

初步了解了table之后,不继续深入讲解,进入下一个阶段,毕竟这里主要讲的是lua的面向对象。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

lua面向对象详解(3)

三、lua面向对象 1、lua中的self 首先来看一个例子: localAccount = {balance = 1000} functionAccount.Withdraw(money)    A...

Lua面向对象详解

简单说说Lua中的面向对象,Lua中的table就是一种对象,看以下一段简单的代码: 复制代码代码如下: local tb1 = {a = 1, b = 2} local tb2 = {a = 1, ...

Lua面向对象封装 链接库

  • 2012-10-18 14:12
  • 1.20MB
  • 下载

Lua支持面向对象代码

Lua面向对象的实现方法

Lua实现面向对象方法大概整理了一些,分为以下两种方法:方法一:官方做法:实现类: local Class= { value=0 } function Class:new(o) ...

lua中的面向对象模拟,类,继承,多态

http://blog.csdn.net/operhero1990/article/details/51482734 之前实习做项目的时候项目用到lua方面的知识 ,不过自己实在太菜,现在也一样,...

Lua中的面向对象实现探讨

元表概念 Lua中,面向对向是用元表这种机制来实现的。元表是个很“道家”的机制,很深遂,很强大,里面有一些基本概念比较难理解透彻。不过,只有完全理解了元表,才能对Lua的面向对象使用自如,才...

LuaOO (Lua与C++交互的面向对象封装)

说明: LuaOO是Lua C API使用C++语言的面向对象封装。LuaOO是在lua原有的API基础之上扩展而来,极少地修改lua源码,主要是通过扩展lua原来的代码。扩展lua与C++环境交互...

Lua面向对象之类和继承

终于来了,在Lua中的面向对象编程,相信目前学习Lua的大部分人都是为了开发手机网游吧。 而且基本都是奔着脚本语言的热更新特性去的,所以全脚本开发变得十分流行。 对于普及不太广的Lua(相对于...
  • ybhjx
  • ybhjx
  • 2016-06-13 17:57
  • 159

lua中的面向对象模拟,类,继承,多态

http://www.soyomaker.com/forum.php?mod=viewthread&tid=230 好了,今天开始写下我的一点学些LUA的心得,LUA作为一种世界上广...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)