当前位置: 首页 > wzjs >正文

浙江温州乐清疫情最新消息网站优化排名易下拉软件

浙江温州乐清疫情最新消息,网站优化排名易下拉软件,做ppt高手_一定要常去这八个网站,wordpress邮件系统文章目录 入门下载其它下载方式 hello world运行 注释单行注释多行注释 type() 函数numberstring[[]]字符串连接(..)字符串长度(#) table迭代 table指定键 变量默认值全局和局部变量 赋值交换变量赋值个数不一致 运算符类型转换goto 语法 条件语句运算符关系运算符逻辑运算符 w…

文章目录

    • 入门
      • 下载
        • 其它下载方式
      • hello world
        • 运行
      • 注释
        • 单行注释
        • 多行注释
      • type() 函数
      • number
      • string
        • `[[]]`
        • 字符串连接(`..`)
        • 字符串长度(`#`)
      • table
        • 迭代 table
        • 指定键
      • 变量
        • 默认值
        • 全局和局部变量
      • 赋值
        • 交换变量
        • 赋值个数不一致
      • 运算符
      • 类型转换
      • goto 语法
    • 条件语句
      • 运算符
        • 关系运算符
        • 逻辑运算符
      • while 循环
      • if 语句
        • if .. elseif() .. else
      • for 循环
      • repeat...until 循环
      • break
    • 函数
      • 初始化
      • 返回值
      • 参数
      • 多个返回值
      • 可变参数(`...`)
    • 字符串
      • 字符串方法
      • 正则匹配
        • match
        • gmatch
    • 数学方法
      • 常用方法
      • 工具方法
      • 其它方法
    • table
      • 初始化数组
      • 多维数组
      • 初始化 table
      • table 方法
      • 迭代器
        • 无状态的迭代器
        • for 循环迭代器
    • 模块
      • 定义模块
      • 导入模块
      • 私有函数

包含最重要概念、函数、方法等的 Lua 备忘单。 初学者的完整快速参考。

参考:

  • Lua 官网 (lua.org)
  • luatos (wiki.luatos.com)
  • Lua 教程 (twle.cn)

入门

下载

macos 使用 homebrew 下载

$ brew install lua
其它下载方式
  • 下载地址 (sourceforge.net)
# 查看 lua 是否安装成功
$ lua -v

hello world

#!/usr/bin/env luaprint("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 = [[
<html>
<head></head>
<body><a href="https://www.twle.cn/">简单编程</a>
</body>
</html>
]]
print(html)
字符串连接(..)
print("a" .. 'b')
-- ab
print(157 .. 428)
-- 157428
字符串长度(#)
print(#"string") -- 6

table

local table = {}
迭代 table

默认的初始索引会从 1 开始

local array = { "apple", "pear", "orange", "grape" }print(array[1]) -- applefor k, v in pairs(array) doprint(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 = 12a = 23
endmain()
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, xprint(x, y) -- 3, 1

local tab = {}tab.one = 2
tab.two = 1tab["one"], tab["two"] = tab.two, tab.oneprint(tab.one, tab.two) -- 1    2
赋值个数不一致
  • 如果变量个数大于值的个数,按变量个数补足 nil

    a, 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, 3print(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) -- 3
    
  • number 类型使用 .. 会自动转换为 string

    local a, b = 1, 2
    print(type(a .. b))
    
  • 其它方式的转换

    print(type(tostring(12))) -- string
    print(type(tonumber("12"))) -- number
    

goto 语法

local function isValidNumber(num)if type(num) ~= "number" thengoto invalidNumber   -- 无条件地跳转到代码中的标签 `::invalidNumber::`endprint("Valid number:", num)return true::invalidNumber::print("Invalid number:", num)return false
endisValidNumber(123)    -- 输出: Valid number: 123
isValidNumber("abc")  -- 输出: Invalid number: abc

条件语句

运算符

关系运算符
符号含义
==等于
~=不等于
>大于
<小于
>=大于等于
<=小于等于
local a, b = 4, 3print(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) doprint("num 的值为:", num)num = num + 1
end

if 语句

if(0)
thenprint("0 为 true")
end
if … elseif() … else
local age = 27;if (age < 18)
thenprint("age 小于 18")
elseif (age < 25)
thenprint("age 小于 25")
elseif (age < 30)
thenprint("age 小于 30")
elseprint("age 大于 30")
endprint("age 的值为 :", age)

注意: Lua0true,但是 Lua 中的 nil 可以当作 false

for 循环

for i = 10, 1, -1 doprint(i)
end
  • lua 中的 for 循环从参数 1 变化到参数 2,每次变化以参数 3 为步长递增 i,并执行一次表达式
  • 参数三,是可选的,如果不指定,默认是 1
  • 参数二只会在一开始求值,其后不会再进行运算
local f = function(x)print("in f(x) ")return x * 2
endfor i = 1, f(5) doprint(i)
end

repeat…until 循环

local num = 11
repeatprint("num 的值为: ", num)num = num + 1
until (num > 10)
-- num 的值为:11

repeat...until 循环的条件语句在当前循环结束后判断

break

local num = 11
repeatprint("num 的值为: ", num)num = num + 1if (num > 15) thenbreakend
until (num > 20)

函数

初始化

像变量一样,如果加上 local 那么就是局部函数

local function main()print("这是一个局部函数")
end

你也可以将函数赋值给一个变量

local main = function()print("这是一个局部函数")
end

返回值

local function min(a, b)if (a < b) thenreturn aelsereturn bend
endprint(min(1, 2))

参数

local p = function(res)print("打印自己的风格", res)
endlocal function main(a, b, p)p(a + b)
endmain(1, 2, p)

多个返回值

local function min(a)local sum = 0local factorial = 1for i, v in pairs(a) dosum = sum + vfactorial = factorial * vendreturn sum, factorial
endlocal a, b = min({ 1, 2, 3, 4 })print(a, b)

可变参数(...)

local function average(...)local result = 0local arg = { ... }for i, v in ipairs(arg) doresult = result + vendreturn result / #arg
endprint("平均值为", 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", "a good day.")
-- Today is a good day.-- 查找第一个匹配的字符串,第三个参数可以提供开始查找的位置,默认从 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与任何控制符配对(例如\n)
%d与任何数字配对
%l与任何小写字母配对
%p与任何标点(punctuation)配对
%s与空白字符配对
%u与任何大写字母配对
%w与任何字母/数字配对
%x与任何十六进制数配对
%z与任何代表0的字符配对
match

第三个参数可选,默认从 1 开始。如果没有捕获组返回整个字符串,匹配失败返回 nil

string.match("I have 2 questions for you.", "(%d+) (%a+) "
)  -- 2       questions
gmatch

返回一个迭代器函数,每次调用迭代器函数,如果参数 pattern 描述的字符串没有找到,迭代函数返回nil

for world in string.gmatch("I have 2 questions for you.", "%a+") doprint(world)
end
-- I
-- have
-- questions
-- for
-- you

数学方法

常用方法

-- 一个比任何数字都大的浮点数
math.huge-- 最小值的整数
math.minintegerlocal 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(9) -- 3

工具方法

-- 返回数字的类型,
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.asin(1.0) -- 1.5707963267949
-- 反余弦方法
math.acos(1.0) -- 0.0
-- 反正切方法
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 doprint(array[i])
end

多维数组

local array = {{ "a", "b", "c" },{ "d", "e", "f" }
}for i = 1, #array dofor j = 1, #array[i] doprint(array[i][j])end
end

初始化 table

local 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)) doprint(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
endtable.sort(array, f)
for i, v in pairs(array) doprint(v)
end -- c b a

迭代器

无状态的迭代器
function square(d,n)if n < dthenn = n + 1return n, n*nend
endfor i,n in square,5,0
doprint(i,n)
end
for 循环迭代器
for i, n in pairs({ 1, 2, 3, 4 }) doprint(i, n)
end

模块

定义模块

-- a.lua
local mod = {}mod.cool = "this is a mod"
function mod.test()print("this is a function")
endreturn mod

导入模块

一般我们可以直接使用 require 导入

-- b.lua
-- local mod = require("a")
-- 使用 pcall 确保 require 函数导入成功,失败则返回一个 false 状态
local status, mod = pcall(require, "a")if not status thenreturn
endmod.test()
print(mod.cool)

私有函数

local mod = {}local function private()print("private")
endfunction mod.public()private()
endreturn mod
http://www.dtcms.com/wzjs/334942.html

相关文章:

  • 长春建站网站建设实时新闻热点
  • 曲靖市网站建设电商平台排名
  • 如何搭建网站的结构百度公司高管排名
  • 空间设计网站广东企业网站seo报价
  • 付费网站建设模板西安网站建设公司排行榜
  • wordpress不显示头像seo外链建设的方法有
  • 怎么查网站备案信息查询新闻投稿
  • 武锡网站建设生购房政策一键优化清理
  • 公司网站建设需要注意的地方企业课程培训
  • 珠海建站网站站长素材音效
  • 轻松筹 做的网站价格免费直链平台
  • 那些网站做民宿18岁以上站长统计
  • 网站建设合同要注意什么网络宣传推广方法
  • 男人做鸭子的网站免费网站推广软件
  • 如何注册公司抖音号嘉兴seo外包平台
  • 建网站域名注册小说关键词搜索器
  • 软件ui设计培训机构网站seo啥意思
  • 专业的铁岭做网站公司seo优化seo外包
  • 网站建设 淄博 兼职燃灯seo
  • 廊坊做网站的大公司百度知道客服电话
  • 网站建设规划书应当包含哪些内容seo网站推广简历
  • 网站建设调研问卷宁波seo入门教程
  • 做网站会员功能电商网站策划
  • wordpress采集微博石家庄百度推广优化排名
  • 上海大型网站制作公司seo是啥软件
  • 云南省网站建设收费调查报告百度关键词推广
  • cpa广告网站怎么做谷歌浏览器下载手机版官网
  • 2015做啥网站致富阿里云域名注册
  • wordpress企业网站模板北京网站优化平台
  • 网站建设应遵循哪几项原则哈尔滨百度搜索排名优化