LUA 語言中subtree 的使用教程

在線編輯器: https://www.runoob.com/try/runcode.php?filename=HelloWorld&type=lua

在Lua語言中,"subtree"通常指的是一個子表或者子樹,它指的是一個Lua表(table)中的一個部分,可以是一個單獨的鍵值對,也可以是一個嵌套的表結構。Lua的table是動態的,可以包含任意類型的數據,包括其他表。以下是一些關于如何在Lua中使用subtree的基本教程:

1.創建和訪問子表:

創建一個父表

local parent_table = {key1 = "value1",key2 = {nested_key = "nested_value",another_key = 123}
}

訪問子表

local nested_table = parent_table.key2
print(nested_table.nested_key) -- 輸出 "nested_value"

2. 修改子表:

nested_table.nested_key = "new_nested_value"
print(nested_table.nested_key) -- 輸出 "new_nested_value"

3. 添加子表元素:

parent_table["new_key"] = { new_subkey = "new_subvalue" }
print(parent_table.new_key) -- 輸出 { new_subkey = "new_subvalue" }

4. 刪除子表元素:

parent_table.key2 = nil -- 刪除整個子表
-- 或者
parent_table.key2.nested_key = nil -- 刪除單個鍵值對

5. 使用循環遍歷子表:

for key, value in pairs(parent_table.key2) doprint(key, value)
end

6. 使用表的復制和嵌套:

local copy = parent_table.key2 -- 創建子表的淺復制
local deep_copy = setmetatable({}, getmetatable(parent_table.key2)) -- 創建子表的深復制

注意:Lua的復制僅復制引用,深復制需要額外處理

-- 創建一個父表
local parent_table = {key1 = "value1",key2 = {nested_key = "11111",another_key = 22222}
}-- 打印父表
print(parent_table)  -- 輸出父表的內容,格式可能是類似 "table: 0x1da5650"
print(parent_table.key1)-- 訪問子表
local nested_table = parent_table.key2
print(nested_table.nested_key) -- 輸出 "11111"
print(nested_table.another_key) -- 輸出 22222-- 修改新的子表元素
nested_table.nested_key = "new_nested_value"
print(nested_table.nested_key) -- 輸出 "new_nested_value"-- 添加新的子表元素
parent_table.key2.child1 = "Child 21"
print(parent_table.key2.child1)  -- 輸出 "Child 21"
### key2 = {
###   nested_key = "11111",
###   another_key = 22222,
###   child1 = "Child 21"
### }--父表增加新鍵--添加新的子表元素
parent_table["new_key"] = { new_subkey = "new_subvalue" }
print(parent_table.new_key.new_subkey)-- 輸出 { new_subkey = "new_subvalue" }
#添加了一個新的鍵值對 new_key,其值是一個新的子表,其中只有一個鍵 new_subkey 和對應的值 "new_subvalue"-- 定義一個遞歸函數來打印表的內容
function printTable(t, indent)indent = indent or 0for key, value in pairs(t) do-- 打印鍵io.write(string.rep(" ", indent))if type(key) == "table" thenio.write("{\\n")elseio.write(key .. " = ")end-- 打印值if type(value) == "table" thenprintTable(value, indent + 2)elseio.write(tostring(value) .. "\\n")endendif indent == 0 thenio.write("}\\n")end
end-- 使用printTable函數來打印父表
printTable(parent_table)

代碼中,parent_table 是一個 Lua 表,其中包含兩個鍵值對:key1 和 key2。key2 是另一個表,它有自己的子鍵 nested_key 和 another_key
parent_table.new_key 是一個表

subtree:add

在Lua語言中,subtree:add通常用于表示在樹狀數據結構(如字典或表)中添加一個子節點或元素。這里假設subtree是一個表或字典,而add是一個函數或者方法,用于在特定鍵下插入新的值。以下是一個簡單的例子:

-- 假設有一個表示樹的結構,其中每個節點是一個表,包含鍵值對
local subtree = {name = "root",children = {} -- 存儲子節點的表
}-- 定義一個add函數,用于在children表中添加子節點
function subtree:add(childKey, childValue)if not subtree.children[childKey] thensubtree.children[childKey] = {}endsubtree.children[childKey].name = childValue -- 或者根據需要添加其他屬性
end-- 使用add函數添加一個子節點
subtree:add("child1", "Child 21")
print(subtree.name) 
print(subtree.children.child1.name) -- 現在subtree應該是這樣的:
-- {
--     name = "root",
--     children = {
--         {
--             name = "Child 1"
--         }
--     }
-- }

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37921.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37921.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

<電力行業> - 《第8課:輸電(一)》

1 輸電環節的意義 電能的傳輸,是電力系統整體功能的重要組成環節。發電廠與電力負荷中心通常都位于不同地區。在水力、煤炭等一次能源資源條件適宜的地點建立發電廠,通過輸電可以將電能輸送到遠離發電廠的負荷中心,使電能的開發和利用超越地…

哪些存儲器內可以直接運行程序?

存儲器是否可以運行程序,主要取決于其是否支持eXecute In Place (XIP) 或類似的直接執行特性。下面根據不同存儲器進行分別說明: 1.PROM(Programmable Read-Only Memory,可編程只讀存儲器)是一種可以通過用戶編程來存…

fiddler使用

1、設置抓取HTTPS的請求 先選中瀏覽器Browser---Chrome 默認是不抓https的數據包的 有時我們抓取的的包是https的,不是http的,就要做一些設置 Tools---Options 勾選Capture HTTPS CONNECTs 勾選Decrypt HTTPS traffic 勾選 Ignore server certificat…

(單機版)神魔大陸|v0.51.0|冰火榮耀

前言 今天給大家帶來一款單機游戲的架設:神魔大陸v0.51.0:冰火榮耀。 如今市面上的資源參差不齊,大部分的都不能運行,本人親自測試,運行視頻如下: (單機版)神魔大陸 下面我將詳細的教程交給大家,請耐心閱…

[數據集][目標檢測]電力場景下電柜箱門把手檢測數據集VOC+YOLO格式1167張1類別

數據集格式:Pascal VOC格式YOLO格式(不包含分割路徑的txt文件,僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數):1167 標注數量(xml文件個數):1167 標注數量(txt文件個數):1167 標注…

編譯工具-Gradle

文章目錄 Idea中配置Gradle項目project目錄settings.gradlebuild.gradlegradlewgradlew.bat Gradle Build生命周期編寫Settings.gradle編寫Build.gradleTasksPlugins Idea中配置 配置項:gradle位置 及倉庫位置 Gradle項目 Task,settings.gradle,build.…

微型無人機未來發展方向

盡管今天的納米和微型無人機顯示出比早期系統大得多的能力,但在速度、續航能力、航程和有效載荷能力方面仍然存在局限性。在任何或所有這些領域的改進將使部隊能夠在推進或打擊之前收集更大、更詳細的可操作情報。這將允許優化任務規劃,并有可能減少傷亡…

java一面 哭了-------

常見的設計模式 首先設計模式可分為三大類 創建型模式 單例模式:一個類只有一個實例,并提供全局訪問;工廠模式:將創建實例的過程隱藏,實例通過一個工廠方法返回;抽象工廠模式:提供一個創建實…

Web滲透-命令執行漏洞及常見靶場探測實戰

一、概述 命令執行(RCE):應用有時需要調用一些執行系統命令的函數,如php中的system,exec,shell exec,passthru,popen,proc popen等,當用戶能控制這些函數的參數時,就可以將惡意系統命令拼接到正常命令中&a…

004-GeoGebra基礎篇-GeoGebra的點

新手剛開始操作GeoGebra的時候一般都會恨之入骨,因為有些操作不進行學習確實有些難以憑自己發現。 目錄 一、點的基本操作1. 通過工具界面添加點2. 關于點的選擇(對象選擇通用方法)(1)選擇工具法(2&#xf…

【高考志愿】光學工程

目錄 一、專業概述 二、專業特點 三、研究和就業方向 3.1 研究方向 3.2 就業方向 四、光學工程專業排名 高考志愿選擇光學工程專業無疑是一項既具深度又富挑戰性的明智之舉。這個古老而充滿魅力的專業,正逐漸嶄露其在現代社會中的重要性與獨特魅力。 一、專業…

NOI大綱——普及組——位運算總結

位運算總結 1.位運算符號 & \& &——按位與 如果兩個相應的二進制位都為1,則該位的結果值為1,否則為0 ∣ | ∣——按位或 兩個相應的二進制位中只要有一個為1,該位的結果值為1 ^——按位異或 若參加運算的兩個二進制位值相同則…

“勢”是“態”的偶然性減少

“態勢感知”中的“勢”指的是一種趨勢或傾向性,而“態”則表示狀態或局勢。這個術語常用于描述在一段時間內系統或事件顯示出來的方向性變化或發展趨勢。因此,可以將“態勢”理解為系統或事件狀態變化的趨勢,這種變化通常反映出偶然性減少的…

解析Java中1000個常用類:Calendar類,你學會了嗎?

推薦一個我自己寫的程序員在線工具站: http://cxytools.com 提供一站式在線工具平臺,專為程序員設計,包括時間日期、JSON處理、SQL格式化、隨機字符串生成、UUID生成、隨機數生成、文本Hash等功能,提升開發效率。 以下是正文。 在 Java 編程中,處理日期和時間是一個常見…

Java新手啟航:Windows下JDK安裝,開啟編程之旅

你是不是對編程充滿好奇,想要邁入Java的世界,卻不知道從何開始?別擔心,每一個Java大師都是從安裝JDK開始的,而今天,我將手把手教你如何輕松完成JDK的安裝,讓你邁出編程之旅的第一步! 接下來&am…

websocket基礎使用學習

websocket基礎使用學習 一、websocket是什么?二、使用步驟1.websocket服務的安裝與啟動安裝服務連接與發消息 總結 一、websocket是什么? 以前,很多網站為了實現推送技術,所用的技術都是Ajax 輪詢。輪詢是在特定的的時間間隔&…

ios18開發者預覽,Beta 2升級新增鏡像等功能

近日,蘋果發布了 iOS 18 開發者預覽版 Beta 2 升級,為 iPhone 用戶帶來了多項新功能。據了解,這些新功能包括 iPhone 鏡像和 SharePlay 屏幕共享,以及其他新增功能。 據了解,iPhone鏡像可以讓Mac用戶將iPhone屏幕鏡像…

OLMo:真正完全開源的大模型

最近,又有一家機構AI2(Allen Institute for AI)開源了一個LLM:OLMo,它的英文全稱就叫Open Language Model。相比之前開源的大模型,OLMo的獨特之處是完全開源,除了訓練的模型,OLMo還開…

ElementUI的基本搭建

目錄 1,首先在控制終端中輸入下面代碼:npm i element-ui -S 安裝element UI 2,構架登錄頁面,login.vue?編輯 3,在官網獲取對應所需的代碼直接復制粘貼到對應位置 4,在繼續完善,從官網添加…

商業智能(BI)實戰項目

商業智能(BI)實戰項目 期待您的關注 ?大數據學習筆記 1.實現的功能 2.數據庫操作步驟 創建數據庫:create database card;創建表:create table card_apply ( cid bigint primary key auto_increment ,apply_uid bigint ,apply_ent…