zoukankan      html  css  js  c++  java
  • lua面向对象(定义与调用)

    lua中的面向对象由table + function组成,分别表示属性,与方法

    最简单的例子:

    person = {name = 'SiNan' , age = '23'} --属性
    person.walk = function ()
        print(person.name..'在走路')
    end

    这种情况的缺陷在于,方法里的person是写死的,以下例子可说明:

    a = person --将person的引用赋值给a
    person = nil --将person置空
    a.walk() --此处无法调用直接报错
    原因在于print方法中,person写死
    改用a.name才可正常运行

    对以上缺陷进行改进,可以给方法传递一个参数,而这个参数代表自己本身

    person.walk = function(self)
        print(self.name..'在走路')
    end
    a = person
    person = nil
    a.walk(a) --调用时传入自身即可

    但是通过以上方式的话,调用也是比较麻烦,每次调用都需要传递自身的参数

    lua里提供了:的方式对函数进行定义

    function person:walk()
        print(self.name..'在走路')
    end
    a= person
    person:walk() --调用时直接用:调用则无需传参数,因为:的已经自动传递了
    a:walk()
    --若还想通过.的方式访问,则需要传递参数(第一个参数)
    a.walk(a)

    这里推荐使用:来定义以及调用

  • 相关阅读:
    java 编译
    MapReduce
    搜索引擎中index、attribute和summary概念
    正排索引和倒排索引简单介绍
    SVN 使用
    PlantUML + Chrome 联合使用
    vim 多标签和多窗口
    关于数据库不适合docker的原因(摘抄)
    跨域
    is_valid校验机制
  • 原文地址:https://www.cnblogs.com/hhs1998/p/15730087.html
Copyright © 2011-2022 走看看