--第二章:
類與值
--Lua中有八中基本類型--nil(空)--boolean(布爾)--number(數(shù)字)--string(字符串)--function(函數(shù))--userdata(自定義類型)--thread(線程)--table(表)--type(變量):總是返回字符串--變量沒有預(yù)定義類型,任何變量都可以包含任意類型的值--例子:PRint(type(a)); -- output --> nila = 10;print(type(a)); -- output --> 10a = "10";print(type(a)); -- output --> stringa = false;print(type(a)); -- output --> boolean--這是合法的在Lua中函數(shù)是作為”第一類值“來看待可以像操作其他值一樣來操作他a = print;print(type(a)); -- output --> function--string--Lua的字符串是不可變的值,而是根據(jù)修改來創(chuàng)建一個新的字符串--例子:a = "one string";b = a.gsub(a, "one", "tow");print(a); -- output --> "one string"print(b); -- output --> "tow string"--字面字符串需要用一對雙引號或者單引號來界定a = "one"print(a); -- output --> "one"b = 'one'print(b); -- output --> "one"--在一個字符串上運(yùn)用算數(shù)操作符時Lua會嘗試將一個字符串轉(zhuǎn)化為數(shù)字--Lua也會嘗試將數(shù)字轉(zhuǎn)為字符串--例子:--".."是字符串操作符使用來連接2個字符串 前后必須用空格分開print(10 .. 20); --output 1020--如果將字符串轉(zhuǎn)化為數(shù)字請使用 tonumber(); 當(dāng)無法正常轉(zhuǎn)換時返回nil (在C和C++中是 atoi();)--如果將數(shù)字轉(zhuǎn)化為字符串請使用 tostring(); 當(dāng)無法正常轉(zhuǎn)換時返回nil (在C和C++中是 itoa();)--Lua5.1中,在字符串前面加上“#”,可以返回字符串的長度--例子:a = "hello";print(#a); -- output --> 5print(#"good/0bye"); -- output -->8 (/0占一個字符位)--現(xiàn)在看一個Lua極為重要也是僅有的一個數(shù)據(jù)類型table(表)--table在Lua中不是值也不是變量,而是對象--創(chuàng)建表(通過構(gòu)造表達(dá)式建立)a = {}; --創(chuàng)建一個表并將他的引用存儲在a中k = "1";a[k] = 10; -- key = 1, value = 10--table永遠(yuǎn)是匿名的--Lua的for循環(huán)(包括5,步長為1)for i = 1, 5, 1 do a[i] = i * 2; print(a[i]); end;--可以將nil賦給table的某個元素表示刪除某個元素--語法糖:b.y 和 b["y"]一樣(很怪異的語法,b打點是調(diào)不出y的,只能調(diào)出x但是卻可以用) b = {};x = "y";y = "yy";b[x] = 100;b[y] = 1000;print(b["y"]);print(b.y);print(b.yy);--Lua中數(shù)組通常以1為索引的初始值for i = 1, #a, 1 do print(a[i]); end--function--Lua中函數(shù)作為第一類值,這表明函數(shù)可以存儲在變量中,可用通過參數(shù)的形式傳遞給其他函數(shù)-- 還可以作為其他函數(shù)的返回值新聞熱點
疑難解答