当前位置: 首页 > wzjs >正文

购买模板做网站南宁网站推广哪家好

购买模板做网站,南宁网站推广哪家好,手机网站制作中,自动成交型网站元表(Metatable)和元方法(Metamethod)是Lua中实现面向对象编程、操作符重载和自定义行为的重要机制。 元表 元表是一个普通的Lua表,可以附加到另一个表上,用于定义或修改该表的行为。每个表都可以有自己的元表。 setmetatable(tab,metatab) 将metatab设…

        元表(Metatable)和元方法(Metamethod)是Lua中实现面向对象编程、操作符重载和自定义行为的重要机制。

元表

        元表是一个普通的Lua表,可以附加到另一个表上,用于定义或修改该表的行为。每个表都可以有自己的元表。

setmetatable(tab,metatab)

将metatab设置为tab的元表

getmetatable(tab)

获取表tab的元表

local t = {}
local mt = {}  -- 元表-- 设置元表
setmetatable(t, mt)-- 获取元表
local mt_of_t = getmetatable(t)

元方法

元方法是定义在元表中的特殊键,当表参与特定操作时会被调用。

 运算相关元方法

local Calculate = {}local data1 = {number = 2}
local data2 = {number = 4}setmetatable(data1,Calculate)
setmetatable(data2,Calculate)--加
Calculate.__add = function(a,b)return a.number+b.number
end
print(data1 + data2)--减
Calculate.__sub = function(a,b)return a.number-b.number
end
print(data1 - data2)--乘
Calculate.__mul = function(a,b)return a.number*b.number
end
print(data1 * data2)--除
Calculate.__div = function(a,b)return a.number/b.number
end
print(data1 / data2)--取余
Calculate.__mod = function(a,b)return a.number%b.number
end
print(data1 % data2)--等于判断
Calculate.__eq = function(a,b)return a.number == b.number
end
print(data1 == data2)--连接符
Calculate.__concat = function(a,b)return a.number .. b.number
end
print(data1..data2)--小于号
Calculate.__lt = function(a,b)return a.number < b.number
end
print(data1<data2)--小于或等于
Calculate.__le = function(a,b)return a.number <= b.number
end
print(data1 <= data2)--幂运算
Calculate.__pow = function(a,b)return a.number ^ b.number
end
print(data1 ^ data2)--负数
Calculate.__unm = function(a)return -a.number
endprint(-data1)

测试打印: 

库定义相关元方法

__tostring

        当要打印表名时,Lua就会查找该表的元表中的__tostring方法,并调用;将对象作为参数传给该函数,然后把元方法的返回值返回。

local animal = {name = "动物"
}local cat = {name = "小猫咪"
}setmetatable(cat,animal)animal.__tostring = function(t)print(t.name)return "动物方法"
endprint(cat)

__call

当表被当做一个函数被调用时,Lua就会查找该表的元表中的__call方法,并调用

local animal = {name = "动物"
}local cat = {name = "小猫咪"
}setmetatable(cat,animal)animal.__call = function(t)print("我是"..t.name.."的方法")
endcat()

表相关元方法

__index

当访问一个表中不存在的字段时,那么Lua就会寻找该table的metatable中的__index 键

元方法是一个表 

local Human = {}
Human.__index = {score = 250
}
local Student = {}setmetatable(Student,Human)
print(Student.score)

元方法是一个函数 

local Human = {}
Human.__index = function()print("调用index元方法")return 1000
end
local Student = {}
setmetatable(Student,Human)
print(Student.score)

__newindex

        当给表中一个不存在的键赋值时,首先判断该表是否有元表,如果没有则相当于直接在表中声明一个变量并赋值,如果有则在元表中查找__newindex键,如果__newindex包含一个表则直接在该表中赋值,不在原始表中赋值。

__newindex 元方法用来对表更新,__index则用来对表访问 。

rawset

在不触发元方法__newindex的情况下,在原始表中进行声明赋值.

未用rawset情况:如果直接赋值的话,会查找tab2的元表中的元方法__newindex,将在元表tab1中声明该键并赋值,而不在tab2中声明赋值

使用rawset情况:当元表中有元方法__newindex时,使用rawset,给tab2中的不存在的键赋值,不会调用元方法__newindex,直接在tab2中声明赋值

rawget

在不触发元方法__index的情况下,直接在原始表中查找该字段

local Human = {score = 100
}Human.__index = {score = 250
}local Student = {}
setmetatable(Student,Human)
print(rawget(Student,"score"))

http://www.dtcms.com/wzjs/491775.html

相关文章:

  • 主营网站建设品牌网络零售的优势有哪些
  • 什么网站类型全球十大网站排名
  • 建c2c网站今日新闻最新10条
  • 互联网行业网站建设网络营销有哪些推广方式
  • 哪里找网站建设靠谱 知乎软文代写公司
  • 兰州网站seo费用千锋教育可靠吗
  • 网页网站开发手机游戏百度电脑版网页版入口
  • vue 做电商网站怎么去推广自己的店铺
  • 百度云 做视频网站35个成功的市场营销策划案例
  • 网站开发吃香吗整合营销网络推广
  • 哪里做网站域名不用备案百度人工客服在线咨询电话
  • 装修价格seo教程自学
  • 做网站被抓推广软文营销案例
  • 轻量应用云服务器搜索优化软件
  • 网站 psd高平网站优化公司
  • 昆明做网站优化哪家好微信广告推广如何收费
  • iis一个文件夹配置多个网站长沙靠谱的关键词优化
  • 公司网页如何建立优化营商环境心得体会2023
  • 娱乐论坛网站建设方案范文营销图片素材
  • 这2个代码 找做网站的 安装一下网络游戏推广平台
  • 昆山规模的网站建设公司有哪些免费网站谁有靠谱的
  • 单位网站建设的优势百度推广运营工作是什么
  • 如何做网站的301重定向泉州seo培训
  • 国内电商网站跳出率是多少最新新闻事件今天国内大事
  • 怎样做咨询网站aso优化哪家好
  • 福州做企业网站域名权重是什么意思
  • 西乡做网站哪家便宜深圳竞价托管公司
  • 网站制作模板下载电商seo名词解释
  • 长沙高校网站制作公司中国职业培训在线
  • jsp小型网站开发代码360seo排名优化服务