在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Hello World交互式编程Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用: [huey@huey-K42JE lua]$ lua Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio > print("hello world") hello world 脚本式编程我们可以将 Lua 程序代码保持到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程,如我们将如下代码存储在名为 hello.lua 的脚本文件中: print("hello world") 使用 lua 命令执行以上脚本,输出结果为: [huey@huey-K42JE lua]$ lua hello.lua hello world 或者将代码修改为如下形式来执行脚本: #!/usr/bin/lua print("hello world") 为 hello.lua 添加可执行权限,并执行 [huey@huey-K42JE lua]$ chmod a+x hello.lua [huey@huey-K42JE lua]$ ./hello.lua hello world 注释单行注释: -- 单行注释 多行注释: --[[ 多行注释 多行注释 --]]
数据类型Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。值可以存储在变量中,作为参数传递或结果返回。 Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。
我们可以使用 type 函数测试给定变量或者值的类型: print( type(nil) ) -- nil print( type(true) ) -- boolean print( type(10.4 * 3) ) -- number print( type("Hello world") ) -- string print( type(print) ) -- function print( type({"a", "b", "c", "d"}) ) -- table nilnil 类型表示一种没有任何有效值,它只有一个值 nil,例如打印一个没有赋值的变量,便会输出一个 nil 值: > print(undefined_value) nil 对于全局变量和 table,nil 还有一个 “删除” 作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉。 booleanboolean 类型只有两个可选值:true 和 false,Lua 把 false 和 nil 看作是 “假”,其他的都为“真”。 string字符串由一对双引号或单引号来表示。 > print("it's ok") it's ok > print('This is a "hello world" program') This is a "hello world" program 也可以用 2 个方括号 “[[]]” 来表示一块字符串。 html = [[ <html> <body> <a href="http://www.lua.org/">Lua</a> </body> </html> ]] 使用 “..” 拼接字符串: > print("hello" .. "world") helloworld 使用 “#” 计算字符串长度: > print(#"abcdefg") 7
循环while 循环while(condition) do statements end for 循环数字 for 循环for v = e1, e2, e3 do block end v 从 e1 变化到 e2,每次变化以 e3 为步长递增 v,并执行一次 block。e3 是可选的,如果不指定,默认为 1。 泛型 for 循环for i, v in ipairs(a) do -- do something with i & v end i 是数组索引值,v 是对应索引的数组元素值。ipairs 是 Lua 提供的一个迭代器函数,用来迭代数组。 repeat ... until 循环repeat ... until 循环类似其他语言的 do ... while 循环。 repeat statements while( condition )
条件控制格式 if exp then block {elseif exp then block} [else block] end
函数定义: function max( a, b ) if a >= b then return a else return b end end 多返回值: function maxmin( arr ) if #arr < 1 then return nil, nil end local max = arr[1] local min = arr[1] for i, v in ipairs(arr) do if arr[i] > max then max = arr[i] end if arr[i] < min then min = arr[i] end end return max, min end 可变参数: function average(...) local sum = 0 local args = {...} for i, v in ipairs(args) do sum = sum + v end return sum/#args end print(average(1, 2, 3, 4))
运算符算术运算符+、-、*、/、%、^(乘幂) 关系运算符==、~=(不等于)、>、<、>=、<= 逻辑运算符and、or、not 其他运算符..(拼接字符串)、#(计算字符串或 table 的长度)
字符串字符串的常用操作-- 字符串全部转为大写字母 string.upper("hello") -- HELLO -- 字符串全部转为小写字母 string.lower("HELLO") -- hello -- 替换字符串 string.gsub("tooth", "o", "e") -- teeth 2 -- 查找字符串 string.find("hello world", "or") -- 8 9 -- 反转字符串 string.reverse("Lua") -- auL -- 格式化字符串 string.format("%4d-%02d-%02d", 2016, 1, 1) -- 2016-01-01 -- 将整型数字转成字符并连接 string.char(97, 98, 99, 100) -- abcd -- 返回第一字符的 ASCII 值 string.byte("ABCD") -- 65 -- 返回第四字符的 ASCII 值 string.byte("ABCD", 4) -- 68 -- 返回字符串长度 string.len("lua") -- 3 -- 返回字符串的指定次数的拷贝 string.rep("abc", 3) -- abcabcabc -- 拼接字符串 "dead" .. "line" -- deadline
数组实例: #!/usr/bin/lua array = {"a", "b", "c"} for i= 0, #array do print(array[i]) end 输出为: nil a b c 在 Lua 索引值是以 1 为起始的,如果知道的索引没有值则返回 nil。但是也可以使用 0 或负数作为索引: #!/usr/bin/lua array = {} for i= -1, 1 do array[i] = i * 2 end for i= -1, 1 do print(array[i]) end 输出为: -2 0 2
|
请发表评论