Lua 數據類型(二)

      網友投稿 1015 2025-03-31

      string(字符串)

      字符串由一對雙引號或單引號來表示。

      string1 = "this is string1" string2 = 'this is string2'

      也可以用 2 個方括號 "[[]]" 來表示"一塊"字符串。

      實例

      html?=?[[

      菜鳥教程

      ]]

      print(html)

      以下代碼執行結果為:

      菜鳥教程

      在對一個數字字符串上進行算術操作時,Lua 會嘗試將這個數字字符串轉成一個數字:

      >?print("2"?+?6)

      8.0

      >?print("2"?+?"6")

      8.0

      >?print("2 + 6")

      2?+?6

      >?print("-2e2"?*?"6")

      -1200.0

      >?print("error"?+?1)

      stdin:1:?attempt to perform arithmetic on a?string?value

      stack traceback:

      stdin:1:?in?main chunk

      [C]:?in??

      >

      以上代碼中"error" + 1執行報錯了,字符串連接使用的是 .. ,如:

      > print("a" .. 'b') ab > print(157 .. 428) 157428 >

      使用 # 來計算字符串的長度,放在字符串前面,如下實例:

      實例

      >?len?=?"www.runoob.com"

      >?print(#len)

      14

      >?print(#"www.runoob.com")

      14

      >

      table(表)

      在 Lua 里,table 的創建是通過"構造表達式"來完成,最簡單構造表達式是{},用來創建一個空表。也可以在表里添加一些數據,直接初始化表:

      實例

      -- 創建一個空的 table

      Lua 數據類型(二)

      local?tbl1?=?{}

      -- 直接初始表

      local?tbl2?=?{"apple",?"pear",?"orange",?"grape"}

      Lua 中的表(table)其實是一個"關聯數組"(associative arrays),數組的索引可以是數字或者是字符串。

      實例

      -- table_test.lua 腳本文件

      a?=?{}

      a["key"]?=?"value"

      key?=?10

      a[key]?=?22

      a[key]?=?a[key]?+?11

      for?k,?v?in?pairs(a)?do

      print(k?..?" : "?..?v)

      end

      腳本執行結果為:

      $ lua table_test.lua key : value 10 : 33

      不同于其他語言的數組把 0 作為數組的初始索引,在 Lua 里表的默認初始索引一般以 1 開始。

      實例

      -- table_test2.lua 腳本文件

      local?tbl?=?{"apple",?"pear",?"orange",?"grape"}

      for?key,?val?in?pairs(tbl)?do

      print("Key",?key)

      end

      腳本執行結果為:

      $ lua table_test2.lua Key????1 Key????2 Key????3 Key????4

      table 不會固定長度大小,有新數據添加時 table 長度會自動增長,沒初始的 table 都是 nil。

      實例

      -- table_test3.lua 腳本文件

      a3?=?{}

      for?i?=?1,?10?do

      a3[i]?=?i

      end

      a3["key"]?=?"val"

      print(a3["key"])

      print(a3["none"])

      腳本執行結果為:

      $ lua table_test3.lua val nil

      function(函數)

      在 Lua 中,函數是被看作是"第一類值(First-Class Value)",函數可以存在變量里:

      實例

      -- function_test.lua 腳本文件

      function?factorial1(n)

      if?n?==?0?then

      return?1

      else

      return?n?*?factorial1(n?-?1)

      end

      end

      print(factorial1(5))

      factorial2?=?factorial1

      print(factorial2(5))

      腳本執行結果為:

      $ lua function_test.lua 120 120

      function 可以以匿名函數(anonymous function)的方式通過參數傳遞:

      實例

      -- function_test2.lua 腳本文件

      function?testFun(tab,fun)

      for?k?,v?in?pairs(tab)?do

      print(fun(k,v));

      end

      end

      tab={key1="val1",key2="val2"};

      testFun(tab,

      function(key,val)--匿名函數

      return?key.."="..val;

      end

      );

      腳本執行結果為:

      $ lua function_test2.lua key1 = val1 key2 = val2

      thread(線程)

      在 Lua 里,最主要的線程是協同程序(coroutine)。它跟線程(thread)差不多,擁有自己獨立的棧、局部變量和指令指針,可以跟其他協同程序共享全局變量和其他大部分東西。

      線程跟協程的區別:線程可以同時多個運行,而協程任意時刻只能運行一個,并且處于運行狀態的協程只有被掛起(suspend)時才會暫停。

      userdata(自定義類型)

      userdata 是一種用戶自定義數據,用于表示一種由應用程序或 C/C++ 語言庫所創建的類型,可以將任意 C/C++ 的任意數據類型的數據(通常是 struct 和 指針)存儲到 Lua 變量中調用。

      Lua 數據結構

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:我使用PDF轉word,轉換成功后沒有任何東西(word沒法轉成pdf)
      下一篇:自己搭建低代碼開發平臺可以嗎
      相關文章
      亚洲人成在线中文字幕| 日本久久久久亚洲中字幕| 亚洲乱人伦精品图片| 亚洲自偷自偷精品| 亚洲AV日韩AV鸥美在线观看| 久久精品九九亚洲精品天堂| 亚洲午夜福利在线观看| 亚洲午夜久久久影院| 亚洲小说区图片区另类春色| 亚洲人成色777777在线观看| 夜夜春亚洲嫩草影院| 亚洲人成影院在线无码观看| 亚洲人成无码www久久久| 亚洲第一视频在线观看免费| 国产天堂亚洲国产碰碰| 国产精品亚洲专区在线播放| 亚洲av无码乱码在线观看野外 | 国产成人不卡亚洲精品91| 亚洲av乱码中文一区二区三区| 亚洲人片在线观看天堂无码| 亚洲日韩AV一区二区三区中文 | 亚洲综合一区二区三区四区五区| 中文字幕亚洲综合小综合在线| 亚洲av乱码一区二区三区| 亚洲AV无码乱码在线观看代蜜桃| 亚洲 欧洲 日韩 综合在线| 亚洲性色AV日韩在线观看| 男人的天堂av亚洲一区2区| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲成AV人片在线观看| 亚洲高清在线视频| 亚洲精品美女在线观看播放| 亚洲伊人久久大香线蕉啊| 亚洲一区二区三区成人网站| 亚洲AV永久无码精品网站在线观看| 久久亚洲中文无码咪咪爱| 亚洲精品线路一在线观看| 亚洲精品乱码久久久久久久久久久久| 国产亚洲无线码一区二区| 亚洲成色999久久网站| 亚洲免费视频观看|