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

更新於:2021年7月20日

4K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.