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程序设计》的一个学习笔记内容。