Rawset, Rawget and Rawequal

I’ve recently decided it’s finally the time to learn metatables after a couple years of scripting in lua. So I was going through roblox wiki page about metatables https://developer.roblox.com/en-us/articles/Metatables and saw those three functions, rawset, rawget and rawequal. Since wiki provides barely any information about them, I was wondering if anyone could answer the next three questions; What each of them does?, When are they used? and Are they “necessary” to learn or should I just skip this topic?

Help appreciated,


rawset(t, k, v)

Same as t[k] = v but without invoking __newindex, hence raw (I like calling it “natural” since table access is overloadable as shown)

rawget(t, k)

Same as t[k] but without invoking __index (it naturally will return nil if the key don’t exist)

rawequal(a, b)

Same as a == b but without invoking __eq (it will compare by pointer and not use the overloaded version of ==)


Thank you alot, you helped me way more in a single post than wiki did in an entire article :+1: