91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

青山老竹農(nóng) ? 來源:jf_82863998 ? 作者:jf_82863998 ? 2025-06-23 16:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

踏入LuatOS的二次開發(fā)領(lǐng)域,掌握關(guān)鍵常識是開啟高效編程之旅的第一步。本文將揭示三個不可或缺的核心要點(diǎn),助你快速突破技術(shù)壁壘,深度挖掘系統(tǒng)潛力,讓開發(fā)效率與創(chuàng)造力同步飆升。

本期一起來了解LuatOS開發(fā)需要熟悉的幾個常識。

一、匿名函數(shù)

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

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

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

wKgZO2hY6qmAP2AIAAGzy0dgvG0913.png

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

二、閉包

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

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

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

wKgZPGhY6vSACcZOAADU2E88r5s901.png

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

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

這里做一下解釋:

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

在代碼里面因?yàn)閒=outer(10),所以f(5)就意味著是調(diào)用了兩次函數(shù),傳入了兩個函數(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ù),一個是10對應(yīng)x,一個是5對應(yīng)z。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

wKgZO2hY64CAdpLjAAEDn_nWVYk880.png

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

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

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

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

wKgZPGhY67qAYWNaAACGhUJebhI933.png

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

在多任務(wù),也就是LuatOS的協(xié)程場景下,回調(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ù)和協(xié)程的詳細(xì)信息,后續(xù)再講解。

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

審核編輯 黃宇

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

    關(guān)注

    3

    文章

    4417

    瀏覽量

    67538
  • LuatOS
    +關(guān)注

    關(guān)注

    0

    文章

    156

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    宇樹人形機(jī)器人的配置,核心代碼,調(diào)試方法,二次開發(fā)接口

    宇樹人形機(jī)器人的配置,核心代碼,調(diào)試方法,二次開發(fā)接口
    的頭像 發(fā)表于 12-10 09:05 ?3602次閱讀

    PMC-AX3100邊緣網(wǎng)關(guān):高效采集、邊緣可視、二次開發(fā)更簡單

    協(xié)議并在本地智能處理數(shù)據(jù)?在強(qiáng)光或斷網(wǎng)環(huán)境下,產(chǎn)品能保證現(xiàn)場清晰可視、可靠操作嗎?產(chǎn)品能實(shí)現(xiàn)設(shè)備就地化顯示與監(jiān)控嗎?產(chǎn)品能否開放二次開發(fā)接口,便于快速植入已有代碼
    的頭像 發(fā)表于 12-02 18:04 ?599次閱讀
    PMC-AX3100邊緣網(wǎng)關(guān):高效采集、邊緣可視、<b class='flag-5'>二次開發(fā)</b>更簡單

    新手必備LuatOS MCU核心庫功能測試與實(shí)踐指南

    新手如何快速掌握MCU芯片級開發(fā)?本文通過LuatOS的MCU核心庫,全面演示時鐘頻率獲取、唯一ID讀取、高精度計時、IO復(fù)用配置等核心功能的測試流程,并提供實(shí)用示例,幫助
    的頭像 發(fā)表于 11-12 14:26 ?348次閱讀
    新手<b class='flag-5'>必備</b>:<b class='flag-5'>LuatOS</b> MCU<b class='flag-5'>核心</b>庫功能測試與實(shí)踐指南

    將蜂鳥E203的內(nèi)核移植到fpga之后該怎么進(jìn)行二次開發(fā)呢?

    你們好!請問一下我將蜂鳥E203的內(nèi)核移植到fpga之后該怎么進(jìn)行二次開發(fā)呢?比如我想點(diǎn)亮板子上的led?驅(qū)動攝像頭進(jìn)行圖像識別?這些該如何進(jìn)行呢?蜂鳥有類似freedom studio這樣的嵌入式開發(fā)平臺嗎?
    發(fā)表于 11-10 07:09

    直播回顧 | 掌握車載通信核心技術(shù),虹科CAN總線實(shí)戰(zhàn):PCAN二次開發(fā)技術(shù)直播助您輕松拿捏總線開發(fā)“創(chuàng)新引擎

    ?1CAN總線二次開發(fā):構(gòu)建智能汽車“神經(jīng)網(wǎng)絡(luò)”的核心能力在“軟件定義汽車”的時代,整車電子電氣架構(gòu)正從分布走向集中,車載網(wǎng)絡(luò)的數(shù)據(jù)量和復(fù)雜度呈指數(shù)級增長?;赑CAN等專業(yè)工具的二次開發(fā)能力
    的頭像 發(fā)表于 10-09 17:33 ?605次閱讀
    直播回顧 | 掌握車載通信<b class='flag-5'>核心</b>技術(shù),虹科CAN總線實(shí)戰(zhàn):PCAN<b class='flag-5'>二次開發(fā)</b>技術(shù)直播助您輕松拿捏總線<b class='flag-5'>開發(fā)</b>“創(chuàng)新引擎

    【離線語音】安信可VC-01/02二次開發(fā)篇:自定義音頻播放控制

    系列教程 【二次開發(fā)篇】虛擬開發(fā)環(huán)境搭建和分享 安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發(fā)篇】事件和GPI
    的頭像 發(fā)表于 09-25 16:34 ?873次閱讀
    【離線語音】安信可VC-01/02<b class='flag-5'>二次開發(fā)</b>篇:自定義音頻播放控制

    安信可VC-01/02二次開發(fā)篇: PWM輸出

    系列教程 【二次開發(fā)篇】虛擬開發(fā)環(huán)境搭建和分享 安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發(fā)篇】事件和GPI
    的頭像 發(fā)表于 08-27 16:06 ?943次閱讀
    安信可VC-01/02<b class='flag-5'>二次開發(fā)</b>篇: PWM輸出

    安信可VC-01/02二次開發(fā)篇: 事件和GPIO控制

    系列教程 【二次開發(fā)篇】虛擬開發(fā)環(huán)境搭建和分享 安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發(fā)篇】事件和GPIO控
    的頭像 發(fā)表于 08-19 14:02 ?1091次閱讀
    安信可VC-01/02<b class='flag-5'>二次開發(fā)</b>篇: 事件和GPIO控制

    突破LuatOS開發(fā)瓶頸:三二次開發(fā)必備知識揭秘!

    遇到LuatOS開發(fā)難題?或許你忽略了這三關(guān)鍵常識。它們看似簡單,卻能破解資源管理、效率提升等瓶頸問題,為你的項(xiàng)目注入新活力,實(shí)現(xiàn)技術(shù)躍遷。 本期一起來了解
    的頭像 發(fā)表于 06-23 15:05 ?417次閱讀
    突破<b class='flag-5'>LuatOS</b><b class='flag-5'>開發(fā)</b>瓶頸:三<b class='flag-5'>個</b><b class='flag-5'>二次開發(fā)</b><b class='flag-5'>必備</b>知識揭秘!

    支持二次開發(fā)的工業(yè)級維碼掃碼讀頭選購指南

    在快節(jié)奏的工業(yè)環(huán)境中,如何讓維碼識別速度提升200%?面對復(fù)雜多變的掃碼需求,普通掃碼設(shè)備往往力不從心,而支持二次開發(fā)的工業(yè)級掃碼讀頭正成為企業(yè)降本增效的秘密武器。本文將為您揭開選購工業(yè)級掃碼讀頭
    的頭像 發(fā)表于 06-11 16:05 ?693次閱讀
    支持<b class='flag-5'>二次開發(fā)</b>的工業(yè)級<b class='flag-5'>二</b>維碼掃碼讀頭選購指南

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

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

    因?yàn)镾DP-H1無法進(jìn)行二次開發(fā),想用SDP-K1連接AD7779評估板,接口是否匹配?

    因?yàn)镾DP-H1無法進(jìn)行二次開發(fā),想用SDP-K1連接AD7779評估板,接口是否匹配?
    發(fā)表于 04-24 07:51

    快速開發(fā)實(shí)戰(zhàn)——4路低功耗ADC接口,Air780EPM二次開發(fā)必看!

    Air780EPM 模組,內(nèi)置4MB大內(nèi)存RAM,支持LCD、攝像頭、Modbus、以太網(wǎng)、CAN;具備更強(qiáng)大的二次開發(fā)資源,更完善的外設(shè)能力,也更適于工業(yè)場景。 ? 最新開發(fā)資料詳見
    的頭像 發(fā)表于 04-01 14:56 ?698次閱讀
    快速<b class='flag-5'>開發(fā)</b>實(shí)戰(zhàn)——4路低功耗ADC接口,Air780EPM<b class='flag-5'>二次開發(fā)</b>必看!

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

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

    最佳實(shí)踐指南:Air780EPM的LuatOS二次開發(fā)——OneWire協(xié)議調(diào)試的注意事項(xiàng)

    在物聯(lián)網(wǎng)設(shè)備開發(fā)中,精準(zhǔn)且穩(wěn)定的數(shù)據(jù)傳輸是構(gòu)建智能系統(tǒng)的核心。 一、LuatOS 及 OneWire 說明 ? LuatOS 支持 OneWire 通信協(xié)議,本文以 DS18B20 溫
    的頭像 發(fā)表于 03-17 16:57 ?766次閱讀
    最佳實(shí)踐指南:Air780EPM的<b class='flag-5'>LuatOS</b><b class='flag-5'>二次開發(fā)</b>——OneWire協(xié)議調(diào)試的注意事項(xiàng)