Lua 表的一个安全访问问题

xiaoxiao2022-06-12  36

zip = company and company.director and company.director.address and company.director.address.zipcode

以上写法不仅冗长而且低效,该写法在一次成功的访问中对表进行了6次访问。

对于这种问题,c#语音提供了一种安全访问操作符"?."。例如,对于表达式a?.b,当a为null时,其结果是null而不会产生异常。使用该操作符,改写以上代码:

zip = company?.director?.address?.zipcode

Lua语言并没有提供安全访问操作符,并且认为也不应该提供她。不过我们可以使用其他语句在Lua语言中模拟安全访问操作符。

zip = (((company or {}).director or {}).address or {}).zipcode

进一步优化:

empty = {} zip = (((company or empty).director or empty).address or empty).zipcode

以上写法,表中的每一个字段名都只被访问了一次。

 

本文作为阅读《Lua程序设计》的一个学习笔记内容。

转载请注明原文地址: https://www.6miu.com/read-4932713.html

最新回复(0)