1. 程式人生 > >(一)lua基礎語法

(一)lua基礎語法

引號 ace 也有 意思 必須 進行 style type lua基礎

1.從hellowrold開始

1 --語法和Python比較類似,直接像Python一樣使用print即可
2 --這裏我可以直接寫中文,顯然被當成了註釋。在lua中,兩個-表示註釋
3 --[[
4     這種形式可以表示多行註釋
5 ]]
6 
7 --在lua中,語句後面也可以像Python一樣加分號,但也可以不加。
8 print("hello world")

2.lua的基本類型

  1 --lua和Python一樣,並不需要像C一樣聲明一個變量,因為本身帶有值的類型
  2 --直接給變量賦值即可
  3 
  4 --[[
  5 lua的基本類型有:nil(空)
6 boolean(布爾) 7 number(數字) 8 string(字符串) 9 table(表) 10 函數等內容後面再說 11 12 ]] 13 14 --[[ 15 註意:賦值的時候,可以將多個語句寫在一行,用空格或者;分隔。 16 這裏只是演示,但是實際開發中不建議這麽做 17 ]] 18 a = 123;b="satori";c=3.14;d=math.pi 19 --使用type查看值的類型 20
print(type(a), type(b), type(c), type(d)) -- number string number number 21 --可以看到,lua中沒有什麽int float等等,只要是數字,類型通通為number 22 print(type(print)) -- function 23 24 --如果一個變量我們沒有賦值直接使用的話,在Python中會報錯,提示name xxx is not defined 25 --但在lua中不會報錯,對於一個沒有賦值的變量在lua中默認為nil 26 --nil用於區別其他變量,給一個全局變量賦值為nil等於刪除這個全局變量
27 print(mmp, type(mmp)) -- nil nil 28 29 --在lua中,只有false和nil表示假,其他的都表示真。0和空字符串在lua中表示真,這和Python不太一樣 30 31 --lua中,字符串一旦創建了,便不可以修改了。這和Python一樣,但是在Python中可以使用replace修改並返回一個新的字符串 32 --那麽lua也有類似的方法,該方法同樣會得到一個返回值,不會修改原來的值 33 s1 = "hello cruel world" 34 s2 = string.gsub(s1, "cruel", "beautiful") 35 print(s1) -- hello cruel world 36 print(s2) -- hello beautiful world 37 38 --並且在lua中,可以使用單引號也可以使用雙引號 39 --類似於Python,如果輸入的字符串本身有單引號,那麽外部就用雙引號,反之亦然 40 print("I‘m satori") --I‘m satori 41 --如果我非要使用相同的引號,那麽可以使用轉義字符,將內部的引號進行轉義 42 print(I\‘m satori) --I‘m satori 43 44 --[[ 45 一些轉義字符 46 \a:響鈴 47 \b:退格 48 \f:提供表格 49 \n:換行 50 \r:回車 51 \t:制表 ]] 52 print("i am \r satori, come from \n東方地靈殿") 53 --[[ 54 satori, come from 55 東方地靈殿 ]] 56 57 --字符串也可以使用\加上三位數字表示,就是相應的ascii表 58 print("\065") --A 59 60 -- 如果想表達多行字符串,可以使用[[ ]],類似於Python中的三引號‘‘‘ ‘‘‘ 61 s3 = [[ 62 南村蘿莉欺我老無力 63 經常與我發生性 64 關系 65 ]] 66 print(s3) 67 --[[ 68 南村蘿莉欺我老無力 69 經常與我發生性 70 關系 71 ]] 72 73 --如果一個字符串和一個數字進行運算的話,那麽會嘗試將字符串轉化成數字 74 --顯然字符串必須是由數字組成,如果包含不是數字的字符,就會報錯,無法轉化 75 print("666"+1) --667 76 77 --字符串的連接,在lua中..表示字符串連接 78 --不可以使用"a"+"b"這樣的形式,這在Python中是允許的,但在lua中不可以。但可以使用.. 79 s4 = " satori" 80 print("a".."b"..s4) --ab satori 81 print("1".."+".."1".." == ".."2") -- 1+1 == 2 82 83 -- 如果我想獲取一個字符串的長度該怎麽辦呢?在Python中使用len函數,但在lua中使用#。 84 -- 而#在Python中表示註釋,因此兩門語言某些地方類似,某些地方又完全不同,確實很有意思 85 print(#"我隨隨便便一寫就是標準的十五字") -- 45 86 -- 輸出結果為45,咦,不是15嗎?肯定一眼就找出答案了,一個漢字占三個字節 87 -- 而且lua默認用的是utf-8編碼。值得一提的是,在Python中使用len函數計算出來的結果為15 88 -- 因為在Python中,len計算的是字符數,而不是字節數。 89 -- 而且在go語言中,計算的結果也為45,同樣是字節。如果想得到字符數,在go中需要用[]rune轉化一下。 90 s6 = "mmp" 91 print(#s6) -- 3 92 93 -- lua中還有一種叫做table的類型,說白了就是Python中的字典(哈希表),key和value一一對應 94 hash_map = {} 95 hash_map["satori"] = "東方地靈殿" 96 print(hash_map["satori"]) -- 東方地靈殿 97 -- 將hash_map賦值給別的變量,並且將hash_map刪除 98 hash_map_1 = hash_map 99 hash_map = nil 100 print(hash_map) -- nil 101 print(hash_map_1["satori"]) -- 東方地靈殿 102 -- 可以看到即使刪除了hash_map,但不會對hash_map1造成影響 103 -- lua的垃圾回收類似於Python當中的引用計數,當hash_map1也賦值為nil,沒變量再引用的時候就會刪除垃圾資源 104 --如果訪問一個不存在的key,那麽得到的會是nil 105 x = {} 106 x[1] = 2 107 x[2] = 3 108 print(x[1], x[2], x[3]) -- 2 3 nil 109 --想刪除table中某個元素,直接賦值為nil即可 110 x[1] = nil 111 print(x[1]) -- nil 112 -- 而且table這種結構,還可以使用.來訪問 113 x.name = "satori" 114 print(x.name) -- satori

(一)lua基礎語法