我是靠谱客的博主 哭泣酸奶,最近开发中收集的这篇文章主要介绍关于self.__index = self的理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

  • 1.在表中查找,如果找到,返回该元素,找不到则继续
  • 2.判断该表是否有元表,如果没有元表,返回 nil,有元表则继续。
  • 3.判断元表有没有 __index 方法,如果 __index 方法为 nil,则返回 nil;如果 __index 方法是一个表,则重复 1、2、3;如果 __index 方法是一个函数,则返回该函数的返回值。

该部分内容来自作者寰子:https://blog.csdn.net/xocoder/article/details/9028347

 


local BaseCls = {}
BaseCls.sayHello = function() print('Hello') end

local DriverCls = {}
local DrvierCls2 = setmetatable( DriverCls, {__index = BaseCls} )
function DriverCls:new()
   self.__index = self
   return setmetatable( {}, self )
end

function DriverCls:new2()
   return setmetatable( {}, {__index = self} )
end

local driverClsNew1 = DriverCls:new()
local driverClsNew2 = DriverCls:new2()

driverClsNew1.sayHello()
driverClsNew2.sayHello()
print(DriverCls == DrvierCls2)


--Hello
--Hello
--true

self.__index = self做这个操作是因为self作为元表返回了,也就是查找的时候会进入上面3的步骤

最后

以上就是哭泣酸奶为你收集整理的关于self.__index = self的理解的全部内容,希望文章能够帮你解决关于self.__index = self的理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部