Lua中如何避免易忘的语法细节和最佳实践?

2026-04-01 20:360阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计715个文字,预计阅读时间需要3分钟。

Lua中如何避免易忘的语法细节和最佳实践?

仅针对自身理解:__index是指:当我们访问一个表中的元素不存在时,则会触发__index方法寻找__index元素,如果不存在则返回nil,如果存在则返回结果+1。示例代码:window={}; 2; 3; Window.prototype={x: ... }; 4

仅针对自己

__index的理解

__index是:当我们访问一个表中的元素不存在时,则会触发去寻找__index元方法,如果不存在,则返回nil,如果存在,则返回结果

1 Window = {} 2 3 Window.prototype = {x = 0 ,y = 0 ,width = 100 ,height = 100,} 4 Window.mt = {} 5 function Window.new(o) 6 setmetatable(o ,Window.mt) 7 return o 8 end 9 Window.mt.__index = function (t ,key) 10 -- body 11 return 1000 12 end 13 w = Window.new{x = 10 ,y = 20} 14 print(w.wangbin)

打印结果是:1000。这里可以看出,我们在new的时候,w这个表里其实没有wangbin这个元素的,我们重写了元表中的__index,使其返回1000,意思是:如果你要寻找的元素,该表中没有,那么默认返回1000。

备注:__index也可以是一个表,我们这里也可以写__index = {wangbin = 1000},打印的值仍然可以是1000。

阅读全文
标签:理解

本文共计715个文字,预计阅读时间需要3分钟。

Lua中如何避免易忘的语法细节和最佳实践?

仅针对自身理解:__index是指:当我们访问一个表中的元素不存在时,则会触发__index方法寻找__index元素,如果不存在则返回nil,如果存在则返回结果+1。示例代码:window={}; 2; 3; Window.prototype={x: ... }; 4

仅针对自己

__index的理解

__index是:当我们访问一个表中的元素不存在时,则会触发去寻找__index元方法,如果不存在,则返回nil,如果存在,则返回结果

1 Window = {} 2 3 Window.prototype = {x = 0 ,y = 0 ,width = 100 ,height = 100,} 4 Window.mt = {} 5 function Window.new(o) 6 setmetatable(o ,Window.mt) 7 return o 8 end 9 Window.mt.__index = function (t ,key) 10 -- body 11 return 1000 12 end 13 w = Window.new{x = 10 ,y = 20} 14 print(w.wangbin)

打印结果是:1000。这里可以看出,我们在new的时候,w这个表里其实没有wangbin这个元素的,我们重写了元表中的__index,使其返回1000,意思是:如果你要寻找的元素,该表中没有,那么默认返回1000。

备注:__index也可以是一个表,我们这里也可以写__index = {wangbin = 1000},打印的值仍然可以是1000。

阅读全文
标签:理解