女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

突破LuatOS開(kāi)發(fā)瓶頸:三個(gè)二次開(kāi)發(fā)必備知識(shí)揭秘!

合宙LuatOS ? 來(lái)源:合宙LuatOS ? 作者:合宙LuatOS ? 2025-06-23 15:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

遇到LuatOS開(kāi)發(fā)難題?或許你忽略了這三個(gè)關(guān)鍵常識(shí)。它們看似簡(jiǎn)單,卻能破解資源管理、效率提升等瓶頸問(wèn)題,為你的項(xiàng)目注入新活力,實(shí)現(xiàn)技術(shù)躍遷。

本期一起來(lái)了解LuatOS開(kāi)發(fā)需要熟悉的幾個(gè)常識(shí)。

一、匿名函數(shù)

在Lua代碼里面,經(jīng)常看到?jīng)]有名字的函數(shù)。

這種函數(shù)定義之后,要么馬上運(yùn)行,要么作為另一個(gè)函數(shù)的返回值賦給其他變量,所以并不需要一個(gè)函數(shù)名字——稱(chēng)為匿名函數(shù)。

匿名函數(shù)基礎(chǔ)語(yǔ)法結(jié)構(gòu):

wKgZO2hY6qmAP2AIAAGzy0dgvG0913.png

匿名函數(shù)可以某些時(shí)候簡(jiǎn)化代碼,初學(xué)者寫(xiě)代碼可以先不考慮匿名函數(shù)。但是由于匿名函數(shù)在你能閱讀到的Lua代碼里面出現(xiàn)的頻次實(shí)在是太高了,所以你也不得不重視和習(xí)慣匿名函數(shù)。

二、閉包

閉包的實(shí)現(xiàn)通常是通過(guò)在外部函數(shù)內(nèi)部定義一個(gè)函數(shù),并將這個(gè)內(nèi)部函數(shù)作為外部函數(shù)的返回值。

這樣一來(lái),內(nèi)部函數(shù)就可以訪問(wèn)外部函數(shù)作用域中的變量,即使外部函數(shù)已經(jīng)執(zhí)行完畢,這些變量依然可以被內(nèi)部函數(shù)訪問(wèn)——從而形成閉包。

常見(jiàn)的閉包實(shí)現(xiàn)模式如下:

wKgZPGhY6vSACcZOAADU2E88r5s901.png

這樣的好處是,可以定義一個(gè)函數(shù),能夠在一定范圍內(nèi),訪問(wèn)外部的變量,實(shí)現(xiàn)可控的持續(xù)行為。

很多初學(xué)者會(huì)被這段代碼迷惑,會(huì)被繞暈。

這里做一下解釋?zhuān)?/p>

z函數(shù)里面聲明的變量,z是函數(shù)的參數(shù);

在代碼里面因?yàn)閒=outer(10),所以f(5)就意味著是調(diào)用了兩次函數(shù),傳入了兩個(gè)函數(shù)的參數(shù):outer(10)(5);

第一次調(diào)用,out(10) ,意味著在outer函數(shù)里面,y = x這句,x換成10,就是:y = 10;

outer(10)(5)意味著5是內(nèi)部匿名函數(shù)的參數(shù),就是替代z的;

匿名函數(shù)返回y+z,這里y是10,z是5,返回的就是10+5=15。

這里比較繞的,就是給了兩次參數(shù),一個(gè)是10對(duì)應(yīng)x,一個(gè)是5對(duì)應(yīng)z。

匿名函數(shù)和閉包,對(duì)初學(xué)者確實(shí)有點(diǎn)繞。很多讀者不明白:為什么z是outer的第二個(gè)參數(shù)?

這里需要特別搞清楚的是,outer這個(gè)函數(shù)的返回值是個(gè)函數(shù),而且這個(gè)函數(shù)是有參數(shù)的。

那么,這個(gè)帶參數(shù)的函數(shù)賦值給f之后,f就是個(gè)函數(shù)了。于是給f一個(gè)參數(shù)5,這個(gè)5自然就是返回的函數(shù)的參數(shù)了,也就是z了。

雖然并不是所有的閉包都是上面這種代碼的實(shí)現(xiàn)形式,但是初學(xué)者可以先記住這樣的閉包形式。

如果不習(xí)慣閉包,初學(xué)者可以先避免在代碼里面體現(xiàn)閉包的代碼形式。

三、回調(diào)函數(shù)

3.1 回調(diào)函數(shù)是什么

回調(diào)函數(shù)是在LuatOS編程過(guò)程中經(jīng)常用到的一個(gè)技術(shù)。理解LuatOS的回調(diào)函數(shù),可以從“事件驅(qū)動(dòng)”和“函數(shù)作為參數(shù)”兩個(gè)角度來(lái)把握:

回調(diào)函數(shù)(Callback)——是在特定事件發(fā)生時(shí),由系統(tǒng)或框架自動(dòng)調(diào)用你事先定義好的函數(shù)。你只需要把自己的函數(shù)注冊(cè)給系統(tǒng),等事件觸發(fā)時(shí),系統(tǒng)就會(huì)幫你調(diào)用它。

本質(zhì)上,回調(diào)函數(shù)就是一個(gè)普通函數(shù),但它被作為參數(shù)傳遞或注冊(cè)到其他地方,由系統(tǒng)或其他代碼在合適的時(shí)機(jī)自動(dòng)執(zhí)行。

回調(diào)函數(shù)的作用是實(shí)現(xiàn)事件響應(yīng),異步處理。

消息到來(lái),定時(shí)器到點(diǎn),網(wǎng)絡(luò)收發(fā)等功能都經(jīng)常會(huì)用到回調(diào)函數(shù)的處理。

總之,LuatOS的回調(diào)函數(shù),就是你注冊(cè)給系統(tǒng)的,在特定事件發(fā)生時(shí)自動(dòng)被調(diào)用的函數(shù)。

回調(diào)函數(shù)讓事件響應(yīng)、異步處理、任務(wù)解耦變得簡(jiǎn)單靈活,是LuatOS事件驅(qū)動(dòng)編程的核心機(jī)制之一。

3.2 回調(diào)函數(shù)做消息訂閱與發(fā)布

LuatOS支持通過(guò)sys.subscribe訂閱消息并注冊(cè)回調(diào)函數(shù),消息發(fā)布時(shí)自動(dòng)調(diào)用回調(diào):

wKgZO2hY64CAdpLjAAEDn_nWVYk880.png

當(dāng)sys.publish("TEST", 123) 被調(diào)用時(shí),LuatOS內(nèi)部會(huì)遍歷訂閱者列表,找到所有訂閱了"TEST" 的回調(diào)函數(shù),并自動(dòng)把參數(shù)123傳給這些回調(diào)函數(shù)。

通過(guò)這樣的處理,事件觸發(fā)和處理邏輯就被解耦,方便擴(kuò)展和維護(hù)。

3.3 回調(diào)函數(shù)做定時(shí)器和異步操作

定時(shí)器到點(diǎn)后自動(dòng)調(diào)用注冊(cè)的回調(diào)函數(shù):

wKgZPGhY67qAYWNaAACGhUJebhI933.png

3.4 任務(wù)和協(xié)程場(chǎng)景的回調(diào)函數(shù)使用

在多任務(wù),也就是LuatOS的協(xié)程場(chǎng)景下,回調(diào)函數(shù)也常用于任務(wù)喚醒、事件響應(yīng)等。

解耦調(diào)用者與被調(diào)用者:調(diào)用者只需知道“有回調(diào)”,不用關(guān)心回調(diào)具體做什么,提升靈活性。

你只需更換回調(diào)函數(shù),就能實(shí)現(xiàn)不同的處理邏輯,無(wú)需修改底層框架代碼。

任務(wù)和協(xié)程的詳細(xì)信息,后續(xù)再講解。

今天的內(nèi)容就分享到這里了!

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LuatOS
    +關(guān)注

    關(guān)注

    0

    文章

    99

    瀏覽量

    2211
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    解鎖LuatOS新世界:二次開(kāi)發(fā)必備的3個(gè)核心常識(shí)

    踏入LuatOS二次開(kāi)發(fā)領(lǐng)域,掌握關(guān)鍵常識(shí)是開(kāi)啟高效編程之旅的第一步。本文將揭示三個(gè)不可或缺的核心要點(diǎn),助你快速突破技術(shù)壁壘,深度挖掘系統(tǒng)潛力,讓
    的頭像 發(fā)表于 06-23 16:08 ?25次閱讀
    解鎖<b class='flag-5'>LuatOS</b>新世界:<b class='flag-5'>二次開(kāi)發(fā)</b><b class='flag-5'>必備</b>的3<b class='flag-5'>個(gè)</b>核心常識(shí)

    云MES系統(tǒng)源碼,支持 SaaS 多租戶(hù),支持二次開(kāi)發(fā)

    萬(wàn)界星空科技MES生產(chǎn)制造執(zhí)行系統(tǒng)源碼,有演示,多個(gè)項(xiàng)目應(yīng)用案例,成熟穩(wěn)定。支持二次開(kāi)發(fā),商業(yè)授權(quán)后可商用。
    的頭像 發(fā)表于 05-07 11:14 ?203次閱讀
    云MES系統(tǒng)源碼,支持 SaaS 多租戶(hù),支持<b class='flag-5'>二次開(kāi)發(fā)</b>

    血淚教訓(xùn)總結(jié):Air780EPM的LuatOS二次開(kāi)發(fā)——OneWire協(xié)議調(diào)試注意事項(xiàng)

    在物聯(lián)網(wǎng)設(shè)備開(kāi)發(fā)中,精準(zhǔn)且穩(wěn)定的數(shù)據(jù)傳輸是構(gòu)建智能系統(tǒng)的核心。通過(guò)本文,開(kāi)發(fā)者不僅能掌握規(guī)避常見(jiàn)陷阱的方法,還能學(xué)習(xí)如何利用Air780EPM的硬件特性與LuatOS的靈活A(yù)PI設(shè)計(jì),實(shí)現(xiàn)穩(wěn)定可靠
    的頭像 發(fā)表于 03-20 17:52 ?470次閱讀
    血淚教訓(xùn)總結(jié):Air780EPM的<b class='flag-5'>LuatOS</b><b class='flag-5'>二次開(kāi)發(fā)</b>——OneWire協(xié)議調(diào)試注意事項(xiàng)

    DLP6500想調(diào)用API進(jìn)行自主二次開(kāi)發(fā),怎么構(gòu)建開(kāi)發(fā)環(huán)境?

    請(qǐng)問(wèn)一下,我購(gòu)置了DLP6500型號(hào)產(chǎn)品,想利用該產(chǎn)品進(jìn)行開(kāi)發(fā),實(shí)現(xiàn)高速投影的功能。 但是我現(xiàn)在只找到了GUI界面,請(qǐng)問(wèn)一下,如果我想調(diào)用API進(jìn)行自主二次開(kāi)發(fā),怎么構(gòu)建開(kāi)發(fā)環(huán)境? 最好有相關(guān)的技術(shù)指導(dǎo)文件,謝謝。
    發(fā)表于 03-03 07:03

    怎么配置dlp6500二次開(kāi)發(fā)的環(huán)境,可以使用VS2013嗎?

    我想請(qǐng)問(wèn)一下,怎么配置dlp6500二次開(kāi)發(fā)的環(huán)境,可以使用VS2013嗎?有沒(méi)有什么可以參考的文件,感謝!
    發(fā)表于 02-28 06:39

    請(qǐng)問(wèn)LDC1312EVM和TI提供的軟件GUI能被二次開(kāi)發(fā)嗎?

    請(qǐng)問(wèn)LDC1312EVM和TI提供的軟件GUI能被二次開(kāi)發(fā)嗎,想做個(gè)測(cè)試臺(tái)供車(chē)間員工使用。
    發(fā)表于 02-26 06:35

    DLPLCR4500EVM二次開(kāi)發(fā)時(shí)在hid_write函數(shù)處出錯(cuò)是什么原因?qū)е碌模?/a>

    二次開(kāi)發(fā)時(shí)在hid_write函數(shù)處出錯(cuò),之前沒(méi)有錯(cuò)誤不知道動(dòng)了什么導(dǎo)致出錯(cuò)了,環(huán)境為X64的C++,使用下載的GUI軟件是可以連接并投影圖片的。 錯(cuò)誤信息如下圖
    發(fā)表于 02-21 06:00

    DLP4500-C350REF如何在linux下借助SDK二次開(kāi)發(fā)

    請(qǐng)問(wèn)在哪里有二次開(kāi)發(fā)環(huán)境配置文檔
    發(fā)表于 02-18 08:24

    深居淺出AutoCAD二次開(kāi)發(fā)

    深居淺出AutoCAD二次開(kāi)發(fā),net版
    發(fā)表于 01-06 14:12 ?7次下載

    TSW14J56EVM板卡提供二次開(kāi)發(fā)的接口怎么使用的?

    TSW14J56EVM板卡提供二次開(kāi)發(fā)的接口怎么使用的,有沒(méi)有詳細(xì)的使用說(shuō)明文檔?
    發(fā)表于 01-03 07:29

    SOLIDWORKS二次開(kāi)發(fā)參數(shù)化設(shè)計(jì)工具? 慧德敏學(xué)

    SOLIDWORKS二次開(kāi)發(fā)參數(shù)化設(shè)計(jì)工具?涵蓋選型、建模、裝配、出圖、編碼、報(bào)表、集成等眾多環(huán)節(jié)和任務(wù)的整合,我們除了提供專(zhuān)業(yè)培訓(xùn),還可針對(duì)實(shí)際產(chǎn)品提供項(xiàng)目導(dǎo)入,實(shí)現(xiàn)交鑰匙工程,消除企業(yè)的所有風(fēng)險(xiǎn)
    的頭像 發(fā)表于 12-20 16:21 ?476次閱讀

    SOLIDWORKS二次開(kāi)發(fā)應(yīng)用范圍與實(shí)例

    SOLIDWORKS二次開(kāi)發(fā)為企業(yè)和設(shè)計(jì)師們提供了廣闊的定制化空間,能夠更好地滿(mǎn)足復(fù)雜多變的設(shè)計(jì)需求,幫助工程師和設(shè)計(jì)師提高工作效率,實(shí)現(xiàn)更復(fù)雜的自動(dòng)化任務(wù)。如您有SOLIDWORKS二次開(kāi)發(fā)需求,歡迎咨詢(xún)Solidkits
    的頭像 發(fā)表于 12-13 16:33 ?1001次閱讀

    可以改TSW1405內(nèi)部程序或者是修改HSDC PRO的程序做二次開(kāi)發(fā)嗎?

    可以改TSW1405內(nèi)部程序或者是修改HSDC PRO 的程序做二次開(kāi)發(fā)嗎?
    發(fā)表于 11-27 07:29

    什么~FPGA可以自行二次開(kāi)發(fā)了?

    什么!FPGA可以自行二次開(kāi)發(fā)了? 目前市場(chǎng)上的標(biāo)準(zhǔn)采集卡通常不支持用戶(hù)自行開(kāi)發(fā)FPGA。但因?yàn)閼?yīng)用環(huán)境的需要,不僅僅只需要單一的數(shù)據(jù)采集流程,往往還需要在其中嵌入更復(fù)雜的運(yùn)行和分析邏輯。為了解
    的頭像 發(fā)表于 10-14 15:47 ?574次閱讀
    什么~FPGA可以自行<b class='flag-5'>二次開(kāi)發(fā)</b>了?

    ARMxy ARM工業(yè)邊緣計(jì)算網(wǎng)關(guān)帶Ubuntu OS支持二次開(kāi)發(fā)

    ARMxy系列工業(yè)邊緣計(jì)算網(wǎng)關(guān),搭載Ubuntu操作系統(tǒng),不僅提供了強(qiáng)大的數(shù)據(jù)處理能力,而且通過(guò)支持二次開(kāi)發(fā),為企業(yè)提供了定制化解決方案的可能性。本文將深入探討ARMxy網(wǎng)關(guān)的技術(shù)特性、Ubuntu
    的頭像 發(fā)表于 08-19 15:32 ?747次閱讀
    ARMxy ARM工業(yè)邊緣計(jì)算網(wǎng)關(guān)帶Ubuntu OS支持<b class='flag-5'>二次開(kāi)發(fā)</b>