- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Array Size in Lua Programming
It is a general convention that the size of the array is the number of elements that are present inside the array before the nil. In many cases, nil is not allowed in the array, but for some applications, it is not an issue to have nil inside them.
If we allow nil values inside the array, then we must have some functions to set the size of the array explicitly.
Lua does provide us with two functions to manipulate the size of the array and these are −
- setn
- getn
The setn function is used to set the size of the array explicitly and the getn is used to extract the size that was set by the setn.
How does it work under the hood?
Whenever we make a call to table.setn(t, n), then it associates t with n in an internal (weak) table and a call to table.getn(t) retrieves the value associated with t in that internal table.
If the table t has a field "n" with a numeric value, setn updates this value and then the getn returns it. The getn function still has a last option: If it cannot get an array size with any of those options, it uses the naive approach: to traverse the array looking for its first nil element. So, you can always use table.getn(t) in an array and get a reasonable result.
Let’s consider a few examples where we will first use the naive case, where we will make use of the setn and getn without the array having a field n.
Example
print(table.getn{10,2,4}) --> 3 print(table.getn{10,2,nil}) --> 2 print(table.getn{10,2,nil; n=3}) --> 3 print(table.getn{n=1000}) --> 1000
Output
3 2 3 1000
Now let’s use the field n inside the array.
Example
Consider the example shown below −
a = {n=10} print(table.getn(a)) --> 10 table.setn(a, 1000) print(table.getn(a)) --> 1000
Output
10 1000