Lua基础(1)

来源:互联网 发布:水利数据采集监测系统 编辑:程序博客网 时间:2024/06/07 06:58
<pre name="code" class="python">-- rsync -r -v -p --exclude ".svn" letv/  xiaomi/local function main()  print("Hello world");endfunction factor(n)if n == 0 thenreturn 1;else return n * factor(n-1);endendprint(factor(12));--=========================--注释--[[ main()--]]--print(factor(3))--=========================-- type-- 八大类型:thread/function/table/userdata/string/number/boolean/nilprint("Test type");print(type(10))   --numberprint(type("10")) --stringprint(type(1.04)) --numberprint(type(d))      --nil(d未定义)print(type(type(d)))--string(d未定义)print(type(print))  --functionprint(type(false))  --boolean--=========================-- 类型赋值print("-------------")print(type(var))var = 10print(type(var))var = print;var(type(var))var("hello")  --=========================-- false和nil为假,其余全部为真(包括空字符串和0)flag = falseif flag thenprint("flag is true")else print("flag is false")end--=========================-- 字符串line = 'one string'print(line)line2 = string.gsub(line,"one","another");print(line2)print("one line\nanother line\ta tab\ta\\\ta\"")--=========================--不会转义([[包含原始字符串)page = [[<html>    <head>    <title>New title</title>    </head>    <body>      <a href="www.baidu.com"/>    </body></html>]]print(page)--不会转义( [===[包含原始字符转,并且可以包含[和])expression =  [===[<a href="www.baidu.com"/>\na=b[i]]===]print(expression)--数字字符串运算print("100"+3)print("2.8" * 3)print("4e2"+3)--字符串连接符print("4e2" .. 3)print("3.90" .. 3)num_string = " "real_num = tonumber(num_string)print("real_num is",real_num) --nilnum_string = "+10.9"real_num = tonumber(num_string)print("real_num is",real_num) --10.9real_string = tostring(v)print("real_string is",real_string) --nilreal_string = tostring(19)print("real_string is",real_string) --19is_equal = (10 == "10")print("is equal?",is_equal) --falseis_equal = (tostring(10) == "10")print("is equal?",is_equal) --trueis_equal = (10 == tonumber("10"))print("is equal?",is_equal) --true--数字和字符转换、逻辑判断a = ("10" .. 0)is_equal = ("100" == a)print("is equal?",is_equal) --truea = (10 .. 0)is_equal = ("100" == a)print("is equal?",is_equal) --trueis_equal = (10 == 10.0)print("is equal?",is_equal) --trueis_equal = (10.12 == 10.1200)print("is equal?",is_equal) --true--字符串处理num_count = #"hello world" --字符串长度print("num_count is", num_count)--=========================-- number(没有整型)num = 10;num = 3e2;print(num)if num == nil thenprint("num is nil")else  print("num is",num) end--=========================-- FOR循环--for index=1,select("#", ...) do--local temp = select(index, ...)----end--for var in list do----end--for key, var in ipairs(table) do----endfor var=1, 10, 2 doprint(var)endfor var=1, 10 do  print(var)end--=========================my_table = {}my_table[19] = "wangliang"my_table[19] = 122my_table[19] = (my_table[19] + 1)my_table[19] = (my_table[19] .. 1)my_table["first_key"] ="first_value"print(my_table["first_key"])  --first_valueprint(my_table[19])           --1231print(my_table[20])           --nilprint(my_table.first_key)     --nil(my_table.19报错)arr = {}for var=1, 4 do--arr[var] = io.read()arr[var] = varendfor var=1, #arr doprint(var .. " : " .. arr[var])end--数组可以用table来表示,只是用整数作为key就可以了print(arr[#arr])        --打印最后一个元素arr[#arr+1] = "new_one" --添加一个新元素到末尾print(arr[#arr])        --打印最后一个元素arr["key"] = "value"-- arr = {1: 1, 2: 2, 3: 3, 4: 4,5: 'new_one', 'key': 'value'}n = table.maxn(arr) --返回最大正向索引:5print(n)  arr[22] = 100n = table.maxn(arr) --返回最大正向索引:22print(n)-- rsync -r -v -p --exclude ".svn" letv/  xiaomi/local function main()  print("Hello world");endfunction factor(n)if n == 0 thenreturn 1;else return n * factor(n-1);endend--=========================--注释--[[ main()--]]--print(factor(3))--=========================-- typeprint(factor(12));print(type(10))print(type("10"))print(type(1.04))print(type(type(d)))print(type(d))print(type(print))print(type(false))--=========================-- 类型赋值print("-------------")print(type(var))var = 10print(type(var))var = print;var(type(var))var("hello")  --=========================-- 八大类型:thread/function/table/userdata/string/number/boolean/nil-- false和nil为假,其余全部为真(包括空字符串和0)--=========================-- 字符串line = 'one string'print(line)line2 = string.gsub(line,"one","another");print(line2)print("one line\nanother line\ta tab\ta\\\ta\"")--=========================--不会转义([[包含原始字符串)page = [[<html>    <head>    <title>New title</title>    </head>    <body>      <a href="www.baidu.com"/>    </body></html>]]print(page)--不会转义( [===[包含原始字符转,并且可以包含[和])expression =  [===[<a href="www.baidu.com"/>\na=b[i]]===]print(expression)--数字字符串运算print("100"+3)print("2.8" * 3)print("4e2"+3)--字符串连接符print("4e2" .. 3)print("3.90" .. 3)num_string = " "real_num = tonumber(num_string)print("real_num is",real_num) --nilnum_string = "+10.9"real_num = tonumber(num_string)print("real_num is",real_num) --10.9real_string = tostring(v)print("real_string is",real_string) --nilreal_string = tostring(19)print("real_string is",real_string) --19is_equal = (10 == "10")print("is equal?",is_equal) --falseis_equal = (tostring(10) == "10")print("is equal?",is_equal) --trueis_equal = (10 == tonumber("10"))print("is equal?",is_equal) --true--数字和字符转换、逻辑判断a = ("10" .. 0)is_equal = ("100" == a)print("is equal?",is_equal) --truea = (10 .. 0)is_equal = ("100" == a)print("is equal?",is_equal) --trueis_equal = (10 == 10.0)print("is equal?",is_equal) --trueis_equal = (10.12 == 10.1200)print("is equal?",is_equal) --true--字符串处理num_count = #"hello world" --字符串长度print("num_count is", num_count)--=========================-- number(没有整型)num = 10;num = 3e2;print(num)if num == nil thenprint("num is nil")else  print("num is",num) end--=========================-- FOR循环--for index=1,select("#", ...) do--local temp = select(index, ...)----end--for var in list do----end--for key, var in ipairs(table) do----endfor var=1, 10, 2 doprint(var)endfor var=1, 10 do  print(var)end--=========================my_table = {}my_table[19] = "wangliang"my_table[19] = 122my_table[19] = (my_table[19] + 1)my_table[19] = (my_table[19] .. 1)my_table["first_key"] ="first_value"print(my_table["first_key"])  --first_valueprint(my_table[19])           --1231print(my_table[20])           --nilprint(my_table.first_key)     --nil(my_table.19报错)arr = {}for var=1, 4 do--arr[var] = io.read()arr[var] = varendfor var=1, #arr doprint(var .. " : " .. arr[var])end--数组可以用table来表示,只是用整数作为key就可以了print(arr[#arr])        --打印最后一个元素arr[#arr+1] = "new_one" --添加一个新元素到末尾print(arr[#arr])        --打印最后一个元素arr["key"] = "value"-- arr = {1: 1, 2: 2, 3: 3, 4: 4,5: 'new_one', 'key': 'value'}n = table.maxn(arr) --返回最大正向索引:5print(n)  arr[22] = 100n = table.maxn(arr) --返回最大正向索引:22print(n)arr2 = {x = 10} --等价于--arr2.x = 10--arr2["x"] = 10print(arr2["x"])i=10arr3 = {[tostring(i+1)] = "19", [i+0] = "20", [i+1]= "21"}print(arr3[11])print(arr3["11"])-- 问题:数组(table)如何迭代?


                                             
0 0