
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Read-Only Tables in Lua Programming
While working with tables, we can easily access and modify the values present in the tables provided we know the key. But there are cases where we would like our tables to be in read-only format so that the values present inside the table cannot be modified.
There are many benefits for this particular approach as we can make use of such read only tables in storing information that we don’t want anyone to mutate, like storing data of employees.
In order to make any table a read only table we make use of the setmetatable() function along with __index and __newindex metamethods.
Let’s first write the function that will take a table as an argument and then will convert that table into a read only table.
Example
Consider the function shown below −
function readOnly (t) local proxy = {} local mt = {-- create metatable __index = t, __newindex = function (t,k,v) error("attempt to update a read-only table", 2) end } setmetatable(proxy, mt) return proxy end
Now let’s make use of the above function where we will pass a table into the above function and then will try to modify the value present in the table.
days = readOnly{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"} print(days[2])--> Monday days[2] = "Noday"
Output
stdin:1: attempt to update a read-only table