# Lua 快速笔记(三)OO

class

Animal = { name = "", age = 0 }

function Animal:new (o) 
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  return o
end

function Animal:bark () 
  print(self.name .. ': waor')
end


misha = Animal:new({ name = 'Misha', age = 12 })

misha:bark()

-- string: 'Misha: waor'

ps: 如果要使用self 关键字。new方法必须使用 : 声明。并且调用的时候也要记得用 :

extends

Cat = Animal:new()

function Pet:bark ()
  print(self.name .. ': miao')
end

cat = Cat:new {name = 'as', age = 6 }

cat:bark()


VS Code snippet

"new class": {
    "prefix": "newclass",
    "body": [
      "$1 = { $2 }",
      "",
      "function $1:new (o)",
      "  o = o or {}",
      "  setmetatable(o, self)",
      "  self.__index = self",
      "  return o",
      "end",
      "",
      "$3"
  ]
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 2,031评论 0 3
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,726评论 0 3
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,860评论 2 9
  • 时光如白驹过隙,十年前恍如昨日,但有些记忆也隐隐约约,只能从现在的角度去回想了。 十年前的我,已经顺利脱离农村,在...
    前11阅读 348评论 0 3
  • 01 友:你在养狗吗? 我:对,已经养了很多年了。 友:你现在负责照顾它?你喜欢它吗? 我:我负责照顾它,它很可爱...
    yeyilu_wangye阅读 205评论 0 0