[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Long chains of objects (aka tables)
- From: Andrew Starks <andrew.starks@...>
- Date: Fri, 16 May 2014 18:18:54 -0500
On Friday, May 16, 2014, Thiago L. <fakedme@gmail.com> wrote:
So I did some benchmarking: https://gist.github.com/SoniEx2/4b1d9d8e6427cf5a1439
It seems like pcall is almost the best way to do Groovy's ?. stuff in Lua: http://groovy.codehaus.org/Null+Object+Pattern
(let me quote it)
"with the |?.| operator, an _expression_ like |p?.job?.salary| will be equal to null if |salary| is equal to null, or if |job| is equal to null or if |p| is equal to null. You don't need to code a complex nested |if ... then ... else| to avoid a |NullPointerException|."
(actually pcall is more like catching a NullPointerException but w/e)
Now here's what I'm curious about: how fast would indexing long chains be if Lua had the ?. operator? (so that (nil)?.whatever == nil and someObject?.whatever == someObject.whatever)
(Yes that does mean someone'll have to patch Lua to support ?., and yes they'll have to run all the stuff I did on my benchmark, and yes my benchmark seems to cause a glitch...)
Test it yourself:
debug.setmetable(nil, { __index = nil})
Then the `.` operator will behave like ?
I'm curious for the results.
-Andrew