日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lua初学习 9-12 基础

發布時間:2023/11/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lua初学习 9-12 基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1:string 轉 number :tonumber(string)

2: number 轉 string :tostring(number)

3:string API:

? ? ? ?Lua中的字符串是不可變值,a = "cocotang" ?string.gsub(a,"c","z") ?print(a) ----> cocotang

? ? ? ? 1獲得字符串長度:string.len(string) ?或者 #string

? ? ? ? 2拼接2個字符串: string..string ? ? && ? ?如果是2個number number .. number(空格不然誤認為小數點)

? ? ? ? 3截取字符串,組成新的字符串:string.gsub(a,"cc","zz",index) a字符串中的 cc 由 zz 代替 直到index位置

? ? ? ? 4查找字符串中的某字符串位置:string.find(a,"coco") 返回2個值 c 的index 與 o的index

4:io.read() 獲取控制臺輸入

5: Table創建一個List(數組)

? ? ? ? ? ?a={}

? ? ? ? ? ?1:當key 賦值1-10時,len = 10

? ? ? ? ? ?2:當key 賦值0-10時,len = 10 (同上)

? ? ? ? ? Lua中通常用 1 來做 Index的初始值 ?(table.maxn(a))--->返回最大正索引 Index

6:取精度?

? ? ?x = 3.123456 print(x-x%0.001) ? ---->3.123

? ? ?x%1 結果是 x的小數部分 0.123456

? ? ?x-x%1 結果是 x的整數部分 3 ??

? ? ?x-x%0.001 結果是 x取小數點后三位

7:運算符

? ? ?> < == >= <= 同于C#

? ? ? ~= 不等于(C# !=)

? ? ? Lua中取反 not(空格) ? (C# !)

8:運算優先級

? ? ? 基本同于C#,直接用括號顯示的表現優先級 容易理解

? ? ? -x^2 ?-------> -(x^2)

? ? ? x^y^z --------->x^(y^z)

9:Table構造式

? ? ?a = {x = 10 , y = 20} 等價于a ={["x"]=10 ,["y" =20]} ?等價于 a = {} a["x"] =10 a["y"] =20 ?等價于 a = {} a.x= 10 a.y = 20

10:Table里面刪除一個變量

? ? ? a = {} a.x= 10 ?a.x= nil

11:交換變量(Lua里面有點特別) (多重賦值 調函數時傳入的實參多余或者少于形參時,與多重賦值非常相似)

? ? ?C#中:int a=1;int b=2; 交換: int c = a; a =b; b=c;

? ? ?Lua中:a = 1 b = 2 ?交換:a,b = b,a

? ? ?a,b = 1,2,3 ---->舍棄3

? ? ?a,b,c = 1,2 ?----->c=nil

12:流程控制

? ? ?1由于Lua不支持Switch語句,所以一連串的if elseif 是很常見的

? ? ?2循環中用break可以跳出循環

13:Lua中沒有 ++ --,并且 += ?-=也沒有 ? ?如果遞增1 a=a+1

14:Lua中的Foreach( Generic for)

? ? ? 1遍歷所有k: a = {x=1,y=2,z=3;"one","two","three"}

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

? ? ? ? print(k) ?------> ?1 2 3 y x z

? ? ? ? end

? ? ? ?2遍歷所有v:

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

? ? ? ? ?print(v) ?-------> one two three 2 1 3

? ? ? ? ?end

? ? ? ? 2-2 遍歷所有的v? ? ? ? ?

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

? ? ? ? print(a[k]) ?------> ?1 2 3 y x z

? ? ? ? end

? ? ? ? 3遍歷數組a的所有值

? ? ? ? for i , v in ipairs(a) do

? ? ? ? print(v) ?---------> one two three

? ? ? ? end

? ? 值得注意的是:遍歷數組a中的值,ipairs(a) 輸出的并不是所有的value,以后慢慢了解

15:逆向Table(反轉key value)

? ? ? ?a = {x=1, y =2, z =3}

? ? ? ?b = {}

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

? ? ? ?b[v] = k

? ? ? ?end

16:break與return

? ? ? ?break跳出循環,return跳出方法

? ? ? ?注意:但是如果return在if前面 ?報錯

17:方法的調用

? ? ? ?a = {}

? ? ? ?function a:Test() print("orz") end

? ? ? ?第一種調:a:Test() ? ?第二種調:a.Test() 注意第二種隱式的傳入了a ?--->a.Test(a)

? ? ? ?假如 function有一個參數,用第二種調 a.Test(n) 報錯,應該---> a.Test(a,n)

18:方法的返回值

? ? ?function foo1() end 無返回值

? ? ?function foo2() return 1 end 返回一個值

? ? ?function foo3() return 1,2 end 返回兩個值

? ? ?x,y = foo3() ----> x =1, y = 2

? ? ?x = foo3() ?------> x =1 , ?2被丟棄

? ? ?x,y,z = foo3() ----->x=1,y=2,z=nil

? ? ?x,y = foo3(),99 ?----->x = 1,y = 99

? ? ?x,y = foo1(),20,30 ---->x = nil , y =20 ? ?30被丟棄

? ? ?注意:Table 可以接受 函數返回的所有值,前提是函數作為table構造式中最后一個參數,如果不是最后一個參數,那么只會取第一個返回值,無返回值則為nil

? ? ?如果強行讓函數返回第一個值,可以用一對小括號 括起來函數 ---> (foo()) 不管foo有幾個返回值,都只返回第一個,沒有返回nil

? ? ? 特殊內置函數 unpack:它接受一個數組作為參數,并從下標1開始返回該數組的所有元素

? ? ? ?例如:print(unpack({1,2,3,4,5,66})) ? ----> 1,2,3,4,5,66

19:?算術類元方法

__add()?? + 運算對應的元方法
__sub()? ?
__mul
__div
__mod
__pow
__unm???? 相反數
__concat? .. 運算對應的元方法

?

? ? ??

? ? ? ? ??

? ? ? ? ?

轉載于:https://www.cnblogs.com/cocotang/p/5864861.html

總結

以上是生活随笔為你收集整理的Lua初学习 9-12 基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。