Lua程式設計中的陣列大小
通常情況下,陣列的大小是在遇到**nil**之前陣列中存在的元素個數。在許多情況下,陣列中不允許出現**nil**,但在某些應用中,包含**nil**並非問題。
如果允許在陣列中使用nil值,則必須有一些函式來顯式設定陣列的大小。
Lua提供了兩個函式來運算元組的大小,它們是:
- setn
- getn
**setn**函式用於顯式設定陣列的大小,而**getn**函式用於獲取由setn設定的大小。
底層工作原理是什麼?
每當呼叫**table.setn(t, n)**時,它會在內部(弱)表中將**t**與**n**關聯起來,而呼叫**table.getn(t)**則會檢索在該內部表中與t關聯的值。
如果表**t**具有一個值為數字的欄位**"n"**,則**setn**會更新此值,然後**getn**會返回它。getn函式還有一個最後的選擇:如果它無法透過任何這些選項獲取陣列大小,它會使用簡單的方法:遍歷陣列查詢其第一個nil元素。因此,你始終可以在陣列中使用**table.getn(t)**並獲得合理的結果。
讓我們考慮幾個示例,我們首先將使用簡單的情況,在這種情況下,我們將使用setn和getn,而陣列沒有n欄位。
示例
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輸出
3 2 3 1000
現在讓我們在陣列內部使用n欄位。
示例
考慮以下示例:
a = {n=10}
print(table.getn(a)) --> 10
table.setn(a, 1000)
print(table.getn(a)) --> 1000輸出
10 1000
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP