国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Lua基礎語法更新篇(上)

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2026-01-23 19:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

初識 Lua

Lua 是一種輕量小巧的腳本語言,它用標準C語言編寫并以源代碼形式開放。這意味著什么呢?這意味著Lua虛擬機可以很方便的嵌入別的程序里,從而為應用程序提供靈活的擴展和定制功能。而整個Lua虛擬機編譯后僅僅一百余K,經過適當的裁剪還能做到更小,十分適合嵌入式的開發。

同時,在目前腳本引擎中,Lua的運行速度占有絕對優勢。這些都決定了Lua是作為嵌入式腳本的最佳選擇。

在我們編寫代碼之前,需要做一下準備,就是:確保你輸入標點符號時,用的不是中文輸入法。


一、第一個 Lua 程序

幾乎所有語言的第一行代碼,都是輸出hello world,本教程也不意外。

在Lua中,打印結果只需要使用print這個函數即可。同時,如果需要使用函數,只需要在函數名后加上雙括號,同時傳入你想傳入的值即可。

所以,我們來執行下面的代碼,打印出hello world吧!

wKgZPGlzP4mAcd37AAAnMnHNYbQ181.png

二、輸出數據

上一部分,我們知道了,在Lua中,可以使用print函數來打印你想要得到的結果。

并且還知道了,函數是指可以實現某些功能的子程序,可以使用函數名(參數)來執行。

讓我們試著輸出一些其他東西吧!使用多個print函數,輸出自己想輸出的數據。

wKgZPGlzVByAXAlWAABuog3rEbU546.png

三、代碼注釋

代碼注釋就是在代碼里,不會運行的部分。注釋完全不會被運行。

這部分是為了在查看代碼時,可以更好地立即現有代碼含義用的。

我們可以用--開頭,來寫一段單行注釋

也可以用--[[開頭,]]結尾,寫一段多行注釋。

下面是注釋的例子:

wKgZPGlzVNOARiJtAAC2JSZ3eW0171.png

四、變量

4.1 number變量

變量,可以看作是一個桶,在里面裝你想要裝的內容。這些內容可以是Lua包含的所有合法類型。

例如:我想要新建一個桶,名叫bucket,在里面放入233這個數字,就可以像下面一樣:

wKgZPGlzVV-AMFH3AAAgtmgTBdM433.png


讓我們試著自己新建幾個變量吧!

新建變量year,并將變量的值設置為1926

新建變量month,并將變量的值設置為8

新建變量day,并將變量的值設置為7

wKgZPGlzVfWAL2UuAACAnP1u3H4082.png

4.2 了解nil

nil類型表示沒有任何有效值,只要是沒有聲明的值,它就是nil

比如我打印一個沒有聲明的值,便會輸出nil:

wKgZO2lzVlmAPcw8AABEhM1iCDQ216.png

這里需要你思考一下,運行以下代碼,將會輸出什么結果?

wKgZO2lzVoWAe1PQAABHTwLaCbE727.png

4.3 賦值語句

賦值是改變一個變量值的最基本的方法。

如下面一樣,使用等號對左邊的變量進行賦值

wKgZO2lzVrOAfzyQAAA6E7ruPas109.png

Lua可以對多個變量同時賦值,變量用逗號分開,賦值語句右邊的值會依次賦給左邊的變量。

wKgZO2lzVuKABI5zAAAlulEdago934.png

當左右值的數量不一致時,Lua會進行下面的設定:

  • 變量個數 > 值的個數:按變量個數補足nil
  • 變量個數 < 值的個數:多余的值會被忽略

下面的例子可以展示這種設定:

wKgZPGlzVxiAPnqHAADARvggYq0866.png

這里需要你思考一下,運行以下代碼,將會輸出什么結果?

wKgZO2lzVzyANcj9AABWPDQqH58219.png

4.4 交換變量

這部分需要你自己完成一個任務:

已知下面的代碼,并且已知a和b的值,請在交換他們的值,使打印輸出12 34

wKgZO2lzV2uAOp9GAACY3y-OOiw402.png

4.5 輸出變量

我們已經知道了,在Lua中,可以使用print函數來打印你想要得到的結果。

同時在上一節,我們學會了新建變量和設置變量的值。

讓我們試著輸出某個變量吧!使用print函數,輸出已知變量。 我們已知變量num為某個數字,試著輸出它的值吧!

wKgZPGlzV5qAb3xYAABdKmnDvdo215.png

4.6 算數運算符

運算符是一個特殊的符號,用于告訴解釋器執行特定的數學或邏輯運算。

上一節中,新建的數字變量,我們稱之為number類型的變量。

本節我們來學習使用算術運算符,如下所示:

wKgZPGlzV_OAZo9IAACRxrAir1A228.png

我們可以通過以下實例來理解算術運算符的應用:

wKgZPGlzWBeAKoOFAAFTGBT-j7s173.png

你需要完成下面的任務:

已知,一個長方體的長寬高分別為a、b、c(單位米),且這個物體重量為m(單位克)

請打印出物體的密度(單位g/m3)

注:密度計算公式 密度 = 質量 / 體積

wKgZO2lzWD2AbRM7AABZqMyVAUc672.png

六、字符串

6.1 string類型變量

字符串(即string),就是一串文本數據,可以存儲你要的文本。

在第二節中,print出的數據就是一個字符串。

Lua 語言中字符串可以使用以下三種方式來表示:

1. 單引號間的一串字符

2. 雙引號間的一串字符

3. [[和]]間的一串字符

你可以參考下面的例子來深入理解:

wKgZO2lzWPCACEnnAAE-WpYUD1I228.png

接下來你需要完成下面的練習:

新建三個變量s1、s2、s3

分別存入字符串數據:str、abc、233,使輸出打印正確

wKgZPGlzWSiAMRTHAACQpC4Yk-Q662.png

6.2 轉義字符

在上一節中,我們學習了如何聲明字符串。

但是我們有時候會遇到一些特殊的問題,如:如何輸出單引號和雙引號?如何輸出回車換行?

也許我們可以用下面的方式簡單規避,輸出單引號時,聲明字符串用雙引號括起來,像下面這樣

wKgZO2lzWViAfdoRAAAZ6V07YBQ626.png

同理,輸出雙引號時,聲明字符串用單引號括起來,像下面這樣

wKgZPGlzWYCARzy8AAAZs2z_174651.png

但是,這樣會出現一個問題:如何同時顯示單引號和雙引號?這里就需要轉義字符登場了。

轉義字符用于表示不能直接顯示的字符,比如后退鍵、回車鍵、等。

以開頭的都是轉義字符,下面時常用的轉義字符格式:

wKgZO2lzWaqAGs9_AABdCJqUw-M656.png

例如,如果我們想給str賦值一個單引號,一個雙引號('"),那么我們可以這樣寫:

wKgZO2lzWc2AGY1yAAAchH8OM0k566.png

下面需要你來完成一個簡單的任務:

新建一個變量str,給str賦值為

abcd"ef'gh]]

并打印出來

wKgZO2lzWfOAOTr3AABYFKW2AsI928.png

6.3 string拼接

字符串和字符串可以相加嗎?可以!我們可以用拼接符號來將兩個獨立的字符串拼起來。

我們使用..來表示字符串拼接符號,如下面的示例代碼:

wKgZO2lzWiGAdmFBAABhoo5Kv48353.png


下面你要完成這個任務:

已知三個字符串變量s1、s2、s3

請將他們按順序拼接起來,存入all,并使用print輸出結果

wKgZO2lzWkiAc0uQAABYLSgI41g169.png

6.4 number轉string

上面一節學習了如何拼接字符串,這個方法固然很好用,但是有時候我們會遇到一個需求,那就是把number類型的變量和string類型的變量拼接起來,組成一個新的string

比如下面的變量n和s,如何拼接起來呢?

wKgZPGlzWn2ARWLiAAAk0uB75hg834.png

我們可以直接將number類型的變量n轉換成string類型的值,這樣就可以拼接了

使用tostring(value)函數即可實現這一操作:

wKgZPGlzWqKAfZJHAABVVmHzUzM285.png

下面你要完成這個任務:

已知三個變量n1、s、n2

然后將他們按順序拼接起來,存入變量result,使輸出結果正確

小提示:在某些情況下,Lua會自動將number類型轉換成string類型

wKgZPGlzWs2AGnabAABYG2Mw_GE462.png

6.5 string轉number

上面一節學習了如何將number轉成string,這一節我們來學習如何將string轉成number

比如下面的變量s,存儲的內容是一個字符串,但是代表了一個數字,如何轉成number再與n相加計算呢?

wKgZO2lzW_uAIXqjAAAmM_iGtWs362.png


我們可以直接將string類型的變量s轉換成number類型的值,這樣就可以計算了

使用tonumber(value)函數即可實現這一操作:

wKgZPGlzXByAGrUlAABVBXPUR-A522.png

下面你要完成這個任務:

已知三個字符串變量s1、s2、s3,其內容均為純數字

請計算他們的算術和,賦值給新建的變量result,使下面代碼輸出正確結果

wKgZO2lzXD-AV4o5AABajgBmGBU681.png

七、邏輯運算

7.1 布爾型和比較運算

布爾型(boolean)只有兩個可選值:true(真) 和false(假)

Lua 把 false 和 nil 看作是false,其他的都為true(包括0這個值,也是相當于true)

Lua 中也有許多的關系運算符,用于比較大小或比較是否相等,符號及其含義如下表:

wKgZO2lzXImAGEeZAAB_IPFo6m4260.png

我們可以通過以下實例來更加透徹的理解關系運算符的應用:

wKgZO2lzXKaAMJTwAADUKyCgbCA985.png

下面問題來了,運行以下代碼,將會輸出什么結果?請自行思考

wKgZPGlzXMWAPdruAAB2WRbXyrY826.png

7.2 邏輯運算符

邏輯運算符基于布爾型的值來進行計算,并給出結果,下表列出了 Lua 語言中的常用邏輯運算符:

wKgZO2lzXPWAZGNnAABBhWm7J7s770.png

我們可以通過以下實例來更加透徹的理解邏輯運算符的應用:

wKgZO2lzXReAW0UAAAE4xtUOkIw714.png

下面問題來了,運行以下代碼,將會輸出什么結果?

wKgZPGlzXTyASNFeAACMRp0Q4-8392.png

7.3 檢驗大小(自測題)

題目:如果已知number變量n,那么如果需要判斷n是否符合下面的條件:

3

以下四行判斷代碼,正確的是?

(返回true即表示變量n符合要求)

wKgZO2lzXW2AXyaEAACD_mS2Wpg869.png

八、分支判斷

8.1 條件判斷

上面一節學習了布爾類型,那么這個需要用到哪里呢?我們需要用它來進行某些判斷。

在Lua中,可以使用if語句來進行判斷,如下面所舉例的代碼,可以判斷n是否為小于10的數:

wKgZO2lzXamAF5-mAABOPQkKCQI016.png

我們整理一下,實際上if語句就是如下結構:

wKgZO2lzXeyADAwcAABIt4Gspv0771.png


下面是你需要完成的事:

已知變量n,請判斷n是否為奇數,如果是,請給n的值加上1

如果你覺得有難度,請查看下面的提示:

求出n除以2的余數:n % 2

給n的值加上1:n = n + 1

wKgZPGlzXhWALe9vAADElZ2d3cM423.png

8.2 多條件判斷

上面一節學習了簡單的if語句寫法,這一節我們來學習多條件分支語句

在Lua中,可以使用if語句來進行判斷,同時可以使用else語句,表示多個分支判斷

wKgZPGlzXj-AXTTMAACmWQbxywM049.png

舉個例子,比如有一個數字n:

  • 當它大于等于0、小于5時,輸出太小,
  • 當它大于等于5、小于10時,輸出適中,
  • 當它大于等于10時,輸出太大,

那么代碼就像如下這樣:

wKgZO2lzXnOANMNkAADGBDMh1E4360.png

注意:else和elseif都是可選的,可有可無,但是end不能省略

下面是你需要完成的事:

已知變量n,請判斷n是否為奇數,

如果是,請給n的值加上1

如果不是,請將n的值改為原來的兩倍

wKgZO2lzXpyABlu4AADMeJiGQfo303.png

8.3 判斷三角形合法性(自測題)

你需要使用前面幾章的知識,來完成下面的題目

已知三個number類型的變量a、b、c,分別代表三根木棒的長度

請判斷,使用這三根木棒,是否可以組成一個三角形(兩短邊之和大于第三邊)

如果可以組成,就打印出true

如果不可以,就打印false

wKgZPGlzXsyAaPIcAABVJ3Yh2IU601.png

8.4 if的判斷依據(自測題)

我們在前面了解到,Lua 把false和nil看作是false,其他的都為true(包括0這個值,也是相當于true)

那么問題來了,執行下面的代碼,將會輸出什么?

wKgZPGlzXvmAH-TMAADYHOaC_d0771.png

下篇繼續介紹哦~


審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 語法
    +關注

    關注

    0

    文章

    45

    瀏覽量

    10646
  • Lua
    Lua
    +關注

    關注

    0

    文章

    86

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    警惕兼容性陷阱:LuatOS-Air腳本在LuatOS中的運行異常分析

    即使語法正確的LuatOS-Air腳本,在LuatOS環境中也可能出現“靜默失敗”——程序無報錯但功能未執行。這類問題多與系統事件循環、模塊加載時機或硬件抽象層調用方式有關。本文通過多個真實
    的頭像 發表于 01-13 19:20 ?154次閱讀
    警惕兼容性陷阱:LuatOS-Air腳本在LuatOS中的運行異常分析

    BTS50007-1LUA:高性能12V智能高端功率開關的深度解析

    BTS50007-1LUA:高性能12V智能高端功率開關的深度解析 在電子設備的設計中,功率開關的性能和可靠性對整個系統的穩定性起著至關重要的作用。今天,我們要深入探討的是英飛凌(Infineon
    的頭像 發表于 12-20 09:30 ?686次閱讀

    探索BTH50015 - 1LUA:高效智能高側功率開關的技術剖析

    探索BTH50015 - 1LUA:高效智能高側功率開關的技術剖析 在電子工程師的日常設計工作中,選擇合適的功率開關至關重要。今天,我們就來深入剖析一款名為BTH50015 - 1LUA的Power
    的頭像 發表于 12-18 17:30 ?583次閱讀

    LUA例程-常用的回調函數使用說明

    詳細說明LUA腳本函數功能和對應的應用實例。對于LUA腳本編程有很大的幫助和提高技能。
    發表于 11-24 16:43 ?0次下載

    語法糾錯和testbench的自動生成

    在編寫Verilog代碼時,我一般都是先在編輯器寫完,因為編輯器vscode或者notepad++可以提供語法高亮和自動補全等功能,然后用仿真器跑仿真,但是在編寫過程中不可避免的會有一些語法的錯誤
    發表于 10-27 07:07

    大彩講堂:VisualHMI-LUA教程-獲取和設置16位數據函數

    一、適合范圍本文檔適用于VisualHMI平臺,Lua腳本語言為V5.3版本,配合工程可以完成大部分的內部邏輯處理。二、概述2.1get_uint16(vtype,addr)讀取無符號短整型寄存器
    的頭像 發表于 10-13 16:40 ?1364次閱讀
    大彩講堂:VisualHMI-<b class='flag-5'>LUA</b>教程-獲取和設置16位數據函數

    程序編譯運行正常但是顯示語法錯誤,為什么?

    樣例程序:can_sample.c rtconfig.h里啟用了#define RT_CAN_USING_HDR 代碼從圖中這里開始大段標識語法錯誤: 跳轉到宏
    發表于 09-25 06:27

    如何更新 NuMaker IoT 板的 Wi-Fi 模塊固件?

    更新 NuMaker IoT 板的 Wi-Fi 模塊固件
    發表于 09-04 08:28

    請問如何通過 PinView 和 lua 腳本檢查和修改寄存器狀態?

    如何通過 PinView 和 lua 腳本檢查和修改寄存器狀態?
    發表于 08-28 07:57

    如何通過 PinView 和 lua 腳本檢查和修改寄存器狀態?

    如何通過 PinView 和 lua 腳本檢查和修改寄存器狀態?
    發表于 08-25 06:59

    Android 16更新亮點介紹

    Android 近期在整個平臺上推出了一系列更新,包括:發布 Android 16 并為開發者和用戶提供詳細信息,推出改進外接顯示設備 Android 桌面體驗的開發者預覽版,為 Google
    的頭像 發表于 07-05 11:37 ?3749次閱讀

    零基礎學習LuatOS編程:快速上手開發實戰教程!

    到實踐的跨越。 學習LuatOS的主要方法之一是“運行各個功能模塊的demo代碼”,本期特別分享——LuatOS編程起步相關內容。 ? 注意:本文檔的讀者,默認都已經了解初步的Lua語法。 ? 如果不懂Lua
    的頭像 發表于 06-13 17:27 ?618次閱讀
    零基礎學習LuatOS編程:快速上手開發實戰教程!

    LuatOS編程基礎教程:手把手帶你入門物聯網開發!

    設備開發之旅。 學習LuatOS的主要方法之一是“運行各個功能模塊的demo代碼”,本期特別分享——LuatOS編程起步相關內容。 ? 注意:本文檔的讀者,默認都已經了解初步的Lua語法。 ? 如果
    的頭像 發表于 06-11 13:03 ?764次閱讀
    LuatOS編程基礎教程:手把手帶你入門物聯網開發!

    揭秘:硬件圈的光通信密碼——Lua+LED!

    Lua的輕快語法遇上LED的物理脈沖,竟能生成物聯網設備的社交指紋!通過定義不同的閃爍協議(如Morse光碼、RGB情緒譜),開發者們正在用光信號構建硬件間的非語言社交網絡——這是智能設備獨有
    的頭像 發表于 05-15 14:29 ?533次閱讀
    揭秘:硬件圈的光通信密碼——<b class='flag-5'>Lua</b>+LED!

    harmony OS NEXT-雙向數據綁定MVVM以及$$語法糖介紹

    # 鴻蒙Harmony-雙向數據綁定MVVM以及$$語法糖介紹 ## 1.1 雙向數據綁定概念 在鴻蒙(HarmonyOS)應用開發中,雙向數據改變(或雙向數據綁定)是一種讓數據·模型和UI組件之間
    的頭像 發表于 04-29 16:52 ?1248次閱讀