范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Lua最常用的函数(备忘查询)

  下载
  macos 使用 homebrew 下载$ brew install lua 其它下载方式下载地址 (sourceforge.net)# 查看 lua 是否安装成功 $ lua -v hello world#!/usr/bin/env lua  print("Hello World!") 运行$ lua ./hello.lua # 或者也可以像 bash 脚本一样 $ chmod +x hello.lua ./hello.lua 注释单行注释-- 以两个减号开始 多行注释
  多行注释以 --[[ 开头, 以 ]] 结尾--[[  ]] type() 函数
  使用 type() 函数可以判断变量或者值的类型print(type(true)) -- boolean print(type(nil)) -- nil number
  Lua 默认只有一种 number 类型 double (双精度) 类型print(10) print(0.3) print(2e + 10) string-- 使用 "" local str1 = "str1" -- 使用 "" local str2 = "str2" [[]]
  使用 [[]] 跨行表示多个字符串local html = [[        简单编程   ]] print(html) 字符串连接(..)print("a" .. "b") -- ab print(157 .. 428) -- 157428 字符串长度(#)print(#"string") -- 6 tablelocal table = {} 迭代 table
  默认的初始索引会从 1 开始local array = { "apple", "pear", "orange", "grape" }  print(array[1]) -- apple  for k, v in pairs(array) do   print(k .. " : " .. v) end -- 1 : apple -- 2 : pear -- 3 : orange -- 4 : grape 指定键local array = {} array.one = "apple" array["two"] = "peach"  print(array.one) -- apple print(array.two) -- peach 变量默认值
  变量的默认值均是 nil#!/usr/bin/env lua print(b) -- nil 全局和局部变量
  Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量#!/usr/bin/env lua function main()   local b = 12   a = 23 end  main() print(a) -- 23 print(b) -- nil 赋值a = "hello " .. "world" -- 改变 变量 t.n = t.n + 1  -- 改变 table -- 给多个变量赋值 a, b = 10, 2*a  --> a=10; b=20 交换变量local x, y = 1, 3 x, y = y, x  print(x, y) -- 3, 1 local tab = {} tab.one = 2 tab.two = 1  tab["one"], tab["two"] = tab.two, tab.one  print(tab.one, tab.two) -- 1    2 赋值个数不一致如果变量个数大于值的个数,按变量个数补足 nila, b, c = 1, 3 print(a,b,c) --> 1 3 nil如果变量个数小于值的个数,多余的值会被忽略a = 1 local a, b = a, a + 1, a + 2 print(a, b) --> 1 2运算符
  +
  加法
  -
  减法
  *
  乘法
  /
  除法
  %
  取余,求出除法的余数
  ^
  乘幂,计算次方
  -
  负号,取负值local a, b = 4, 3  print(a + b) -- 7 print(a - b) -- 1 print(a / b) -- 1.3333333333333 print(a * b) -- 12 print(a % b) -- 1 print(a ^ b) -- 64.0 类型转换在算术运算中,string 类型会尝试自动转换为 number 时local a, b, c = "str", "1", "2" -- print(a + b) -- error print(b + c) -- 3number 类型使用 .. 会自动转换为 stringlocal a, b = 1, 2 print(type(a .. b))其它方式的转换print(type(tostring(12))) -- string print(type(tonumber("12"))) -- number条件语句运算符关系运算符
  符号
  含义
  ==
  等于
  ~=
  不等于
  >
  大于
  <
  小于
  >=
  大于等于
  <=
  小于等于local a, b = 4, 3  print(a < b) -- false print(a <= b) -- false print(a == b) -- false print(a ~= b) -- true print(a > b) -- true print(a >= b)-- true 逻辑运算符
  符号
  含义
  and
  逻辑与
  or
  逻辑或操作符
  not
  逻辑非操作符local a, b = true, false print(a and b) -- false print(a and not b) -- true print(a or b) -- true while 循环local num = 1 while (num < 5) do   print("num 的值为:", num)   num = num + 1 end if 语句if(0) then     print("0 为 true") end if .. elseif() .. elselocal age = 27;  if (age < 18) then   print("age 小于 18") elseif (age < 25) then   print("age 小于 25") elseif (age < 30) then   print("age 小于 30") else   print("age 大于 30") end  print("age 的值为 :", age)
  注意: Lua 中 0 为 true,但是 Lua 中的 nil 可以当作 falsefor 循环for i = 10, 1, -1 do   print(i) end lua 中的 for 循环从参数 1 变化到参数 2,每次变化以参数 3 为步长递增 i,并执行一次表达式参数三,是可选的,如果不指定,默认是 1参数二只会在一开始求值,其后不会再进行运算local f = function(x)   print("in f(x) ")   return x * 2 end  for i = 1, f(5) do   print(i) end repeat...until 循环local num = 11 repeat   print("num 的值为: ", num)   num = num + 1 until (num > 10) -- num 的值为:11
  repeat...until 循环的条件语句在当前循环结束后判断breaklocal num = 11 repeat   print("num 的值为: ", num)   num = num + 1   if (num > 15) then     break   end until (num > 20) 函数初始化
  像变量一样,如果加上 local 那么就是局部函数local function main()   print("这是一个局部函数") end
  你也可以将函数赋值给一个变量local main = function()   print("这是一个局部函数") end 返回值local function min(a, b)   if (a < b) then     return a   else     return b   end end  print(min(1, 2)) 参数local p = function(res)   print("打印自己的风格", res) end  local function main(a, b, p)   p(a + b) end  main(1, 2, p) 多个返回值local function min(a)   local sum = 0   local factorial = 1   for i, v in pairs(a) do     sum = sum + v     factorial = factorial * v   end   return sum, factorial end  local a, b = min({ 1, 2, 3, 4 })  print(a, b) 可变参数(...)local function average(...)   local result = 0   local arg = { ... }   for i, v in ipairs(arg) do     result = result + v   end   return result / #arg end  print("平均值为", average(1, 3, 5, 7, 9, 11)) 字符串字符串方法-- 全部转换为大写 string.upper("str") -- STR  -- 全部转换为小写 string.lower("STR") -- str  -- 指定替换的字符串个数, 最后一个参数可选,默认是全部替换 string.gsub("aaaa", "a", "b", 3) -- bbba  3 string.gsub("Today is 29/01/2019", "%d%d/%d%d/%d%d%d%d", "good day.") -- Today is a good day. 1  -- 查找第一个匹配的字符串,第三个参数可以提供开始查找的位置,默认从 1 开始 -- 如果未找到,则返回 nil string.find("referference", "fer") -- 3   5 string.find("Today is 29/01/2021", "%d%d/%d%d/%d%d%d%d") -- 10      19  -- 字符串反转 string.reverse("fw") -- wf  -- 格式化字符串 string.format("value:%c", 1) -- value:a  -- 转换字符并拼接 string.char(97,98,99,100) -- abcd  -- 将字符转化为整数值。 int 用来指定某个字符,默认第一个字符 string.byte("ABCD",4) -- 68  -- 计算字符串长度 string.len("abc") -- 3  -- 返回字符串的 n 个拷贝 string.rep("fw", n) -- fwfw  -- 剪切字符串,第三个参数可选,默认是字符串长度 string.sub("referference", 5, 6) -- rf 正则匹配
  %a
  与任何字母配对
  %c
  与任何控制符配对(例如 )
  %d
  与任何数字配对
  %l
  与任何小写字母配对
  %p
  与任何标点(punctuation)配对
  %s
  与空白字符配对
  %u
  与任何大写字母配对
  %w
  与任何字母/数字配对
  %x
  与任何十六进制数配对
  %z
  与任何代表0的字符配对match
  第三个参数可选,默认从 1 开始。如果没有捕获组返回整个字符串,匹配失败返回 nilstring.match(   "I have 2 questions for you.",    "(%d+) (%a+) " )  -- 2       questions gmatch
  返回一个迭代器函数,每次调用迭代器函数,如果参数 pattern 描述的字符串没有找到,迭代函数返回nilfor world in string.gmatch("I have 2 questions for you.", "%a+") do   print(world) end -- I -- have -- questions -- for -- you 数学方法常用方法-- 一个比任何数字都大的浮点数 math.huge  -- 最小值的整数 math.mininteger  local a = math.abs(-1) -- 1  -- 返回不小于该数到最小整数 local b = math.ceil(1.2) -- 2  -- 返回不大于该数到最大整数 local c = math.floor(1.2) -- 1  -- 取余 local d = math.fmod(9.9, 9) -- 0.9  -- 返回最大值 local g = math.max(1, 2, 3) -- 3 -- 返回最小值 local h = math.min(1, 2, 3) -- 1  -- 返回参数的平方根 local r = math.sqrt(3) -- 9 工具方法-- 返回数字的类型, local l = math.type(1.2) -- float local m = math.type(3) -- integer local n = math.type("") -- nil  -- 返回以指定底底对数 local e = math.log(4, 2) -- 2  -- 返回以 e 为底的自然对数 local f = math.exp(2) -- 7.3890560989307  -- 返回 [0,1) 区间内一致分布的浮点伪随机数 math.random() -- 返回 [1, n] 区间内一致分布的整数伪随机数 math.random(10) -- 返回 [n, m] 区间内一致分布的整数伪随机数 math.random(10, 100)  -- 无符号整数比较,参数一 小于 参数二 则返回 true,否则返回 false local o = math.ult(1, 10)  -- 如果参数可以转换为一个整数,则返回该整数,否则返回 nil local p = math.tointeger("3") -- 3 local q = math.tointeger(0.32) -- nil  -- 返回整数和小数部分 local i, j = math.modf(3.14) -- 3   0.14 其它方法-- 圆周率 math.pi -- 3.1415926535898  -- 正弦方法(以下皆是以弧度表示) math.sin(math.pi / 2) -- 1.0 -- 余弦方法 math.cos(math.pi) -- -1.0 -- 正切方法 math.tan(math.pi / 4) -- 1.0  -- 反正弦方法(以下皆是以弧度表示) math.acos(1.0) -- 0.0 -- 反余弦方法 math.acos(1.0) -- 1.5707963267949 -- 反正弦方法 math.atan(1.0) -- 0.78539816339745  -- 角度转换为弧度 math.rad(90) -- 1.5707963267949 -- 弧度转换为角度 math.deg(math.pi) -- 180.0 table初始化数组
  初始化一个空数组local array = {}
  默认的数组索引从 1 开始local array = { "a", "b", "c", "d" } array[5] = "e"  for i = 1, 5 do   print(array[i]) end 多维数组local array = {   { "a", "b", "c" },   { "d", "e", "f" } }  for i = 1, #array do   for j = 1, #array[i] do     print(array[i][j])   end end 初始化 tablelocal table = {}  table.name = "fw" table.age = "18" table["sex"] = "boy"  -- 获取 table 的长度  print(#table) -- 3  -- 如果想要删除一个 table,那么可以使用 nil 赋值 table = nil print(table) table 方法-- 用于连接 table 中指定的元素 -- table.concat(table [, sep [, start [, end]]]) local a = { "apple", "orange", "peach" } print(table.concat(a, "->", 2, 3)) -- orange->peach  -- 用于向指定闻之插入元素。默认数组末尾 -- table.insert(table, [pos,] value) local a = { "apple", "orange", "peach" } table.insert(a, 1, "pear") print(a[1]) -- pear  -- table.move(a1,f,e,t[,a2]) -- 表a1,a1下标开始位置f,a1下标结束位置e,t选择移动到的开始位置(如果没有a2,默认a1的下标) local array = { "a", "b", "c" }  for i,v in pairs(table.move(array, 1, 3, 2)) do   print(v) end -- a a b c  -- table.sort (table [, comp]) -- 排序,默认是升序 local array = { "a", "c", "b" }  local f = function(a, b)   return string.byte(a) - string.byte(b) > 0 end  table.sort(array, f) for i, v in pairs(array) do   print(v) end -- c b a 迭代器无状态的迭代器function square(d,n)    if n < d    then       n = n + 1    return n, n*n    end end  for i,n in square,5,0 do    print(i,n) end for 循环迭代器for i, n in pairs({ 1, 2, 3, 4 }) do   print(i, n) end 模块定义模块-- a.lua local mod = {}  mod.cool = "this is a mod" function mod.test()   print("this is a function") end  return mod 导入模块
  一般我们可以直接使用 require 导入-- b.lua -- local mod = require("a") -- 使用 pcall 确保 require 函数导入成功,失败则返回一个 false 状态 local status, mod = pcall(require, "a")  if not status then   return end  mod.test() print(mod.cool) 私有函数local mod = {}  local function private()   print("private") end  function mod.public()   private() end  return mod
  官网 lua.org

免费!半价!湖北景区福利来啦!春节放假就在眼前除了走亲访友同贺新春想不想做特别的事情?这个春节小长假小布搜集了湖北多个景区推出的优惠政策赶紧跟着这篇攻略游赏荆楚大好山河吧!武汉图武汉海昌极地海洋公园武汉万达汉秀刘亦菲去乡下,治愈了谁?今年一开头我们就被治愈了。期待了很久的新剧去有风的地方让我们一边看着仙女下凡,一边思考2022年的人生。这部剧的阵容真的强大,除了主角刘亦菲和李现,配角们也都是熟面孔旋风少女胡冰卿为何老年人患尿毒症越来越多呢?医生这4种食物,尽量少吃尿毒症是老年人中常见的一种疾病,主要是因为身体机能下降,导致免疫力和抵抗能力变弱引起的。很多人没有意识到尿毒症的危害性,这才导致了老年期间患尿毒症人数越来越多。下面我们就具体了解一老年人应该怎么吃水果老年人应该怎么吃水果水果老少皆宜。但是,相对于年轻人,老年人的消化吸收能力变弱,同时还可能患有各种各样的慢性疾病,在这些特殊的身体情况下,老年人应该怎么吃水果才能更好地促进健康呢?医生提醒日常需少吃这3类高胆固醇食物,否则增加血管病概率!胆固醇也被称为胆甾醇,分为高密度脂蛋白胆固醇以及低密度胆固醇。高密度脂蛋白胆固醇对于心脑血管有着很好的保护作用,而低密度胆固醇则被称为坏胆固醇。如果体内的这种胆固醇含量较高,患上各烤橘子炖雪梨,冬天把水果加热吃,真不错天南地北大拜年冬天冻得咬牙跺脚,人就总想吃点热乎的,连水果都觉得拔凉,恨不得热一热再吃。以咱们在吃上的造诣,加热水果也不是啥新鲜事了。小时候妈妈给烤的橘子炖的梨,那股迷人香气和温润水果市场开启春节旺销模式马上要过年了,大家都会买点水果在家备着,要么自己吃,要么招待客人。我们都知道元旦之前这沙糖桔的价格有点高,一斤基本上都卖到了7块5毛钱。那么,节前市场上水果价格行情咋样呢?我们来看新的研究表明植物性肉类替代品往往缺乏营养价值随着越来越多的人采用植物性饮食,作为肉类替代品的植物性蛋白质选择的兴起已大大增加。然而,这些产品的营养价值仍然令人担忧。瑞典查尔姆斯理工大学的一项研究发现,在瑞典销售的许多肉类替代央视主持郑天亮26岁嫁大6岁鲁健,婚后ampampquot分居ampampquot15年,现婚姻状况如何2002年,央视主持人鲁健对小6岁的郑天亮表白我喜欢你,想要和你在一起。看着面前这个高高帅帅的男人,郑天亮很心动,但却拒绝了他的表白。然而鲁健并没有放弃,他用了一个小小的方法,成功弟弟带女朋友回家,妈妈做了六菜一汤,其乐融融,提前过春节弟弟带女朋友回家,妈妈做了六菜一汤,全家其乐融融,提前过春节。弟弟春节要值班,提前带女朋友回家。我下班回家,看见爸妈看见笑得合不拢嘴,妈妈做了满满的一桌菜。弟弟马上就要结婚了,事业医生孩子阳了发烧,两种物理退烧方法不可取,怎么处理才正确?文菁妈放开不到一个月的时间,但是周围倒下了一大片,不仅大人倒下了,孩子也倒下了。孩子阳性出现最常见的症状就是发烧,而对于孩子发烧大多数家长会选择在家里面处理,因为孩子退了烧就没有太
越自律越自由大家好我是常立志smile在这里分享下一人的自律,会对自身有哪些好处!自律,是我们这个时代给我们的一种能力,也是我们人生的一种追求。它是我们成功路上的一把钥匙,它告诉我们,你需要什静(散文)子夜时分,县城的犄角旮旯到处冷冷清清的。看不到有一个人,遇不到一辆车。偶尔,只能看到一只小的流浪狗从街面上蹿过。昏黄的路灯下,雾蒙蒙的。已过寒露,黄土高原上早晚的气候明显得湿冷了起绝美(原创)懂事后,就自然而然地有了一种习惯望着她,就似望着一片粉雕玉琢的世界,不禁慨然长叹漫天心事随风舞,何故冬日飘落花。立在呼啸的风中朦胧中和着节拍,卓约的身影恣意飞扬,自由地于天地之间漫现代年轻人穷的主要原因找到了尊重所有声音但只做自己接下来就是落叶北风羽绒服栗子糖堆烤红薯跨年烟花以及冬天的第一场雪以欢喜之心,慢度日常也不要跟我炫富,因为很多牌子根本不认识为了你,我什么苦都能吃,但是香菜真的一看就懂的纯电插混增程汽车的区别,别再傻傻分不清了现在,路上跑得新能源汽车越来越多了,但是有一些朋友却错误地认为,新能源汽车就是纯电动车,纯电动汽车就是新能源车,对各类新能源汽车的区别并缺乏认识。那新能源汽车都有哪些类型?各车型之男人过了60岁,早晨养成这几个习惯,一般都会长寿前言作为男人来说,有很多事情不是那么容易,我们的想法很正常,当你去做的时候不是那么正常。我们需要明白生活当中的重要性,不要把所有的事情都想的那么复杂。养成良好的生活习惯,才能够保证桂林象山区一城水月山川绿十年笃行奋进歌广西新闻网通讯员袁明辉秧玉付李怡慧桂林市万福广场。桂林市象山区委宣传部供图在刚刚过去的十一黄金周,桂林市象山景区迎来了旅游小高峰。近9万人在7天时间内慕名而来,访客人数较2021年亚马逊宣布将在德国投入沃尔沃电池卡车用于交通运输沃尔沃将在今年年底前向德国亚马逊交付全电动重型卡车。该集团宣布,20辆FH电动卡车每年应覆盖超过100万公里的道路。运输行业的主要参与者在减少环境对该行业影响的努力中发挥着至关重要时刻夜谈丨俄罗斯愿低价恢复供气,德国咋不敢要了?2022年10月13日晴今日值班肖拓郑重时刻夜谈第22期有个实验,如果在白纸上放上一只蚂蚁,在蚂蚁周围用笔画上一个圈,蚂蚁就会被囚禁在圈内,怎么也走不出去。而今天,欧盟就是这只蚂蚁法国呼吁美国天然气卖便宜些,德国抱怨美国供欧气开天价法国经济财政及工业数字主权部长布鲁诺勒梅尔12日呼吁美国降低供应欧洲的液化天然气价格,以助欧洲国家应对能源短缺危机。勒梅尔赴美国华盛顿参加国际货币基金组织年度会议,在年会间隙举行的华盛顿的友谊,惊醒了更多的欧洲人最近几天,德法等欧洲主要国家及欧盟层面就对华和对美关系问题,集中发出耐人寻味的表态。欧盟委员会负责经济事务的执行副主席东布罗夫斯基斯11日在柏林的一个会议上表示,与中国脱钩不是欧盟