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

阳江网络问政平台回复查询/宁波seo关键词培训

阳江网络问政平台回复查询,宁波seo关键词培训,松原做网站公司,网站建设及网络推广lua基础语法学习 文章目录 lua基础语法学习1. 基础2. 输入输出3. 分支结构与循环结构4. 函数5. 元表与元方法6. 面向对象 1. 基础 注释 --单行注释--[[ 多行注释 --]]标识符 标识符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上 0 个或多个字母,下划线&…

lua基础语法学习

文章目录

  • lua基础语法学习
    • 1. 基础
    • 2. 输入输出
    • 3. 分支结构与循环结构
    • 4. 函数
    • 5. 元表与元方法
    • 6. 面向对象

1. 基础

注释

--单行注释--[[
多行注释
--]]

标识符

标识符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上 0 个或多个字母,下划线,数字(0 到 9)。

Lua 不允许使用特殊字符如 @, $, 和 % 来定义标识符。 Lua 是一个区分大小写的编程语言。

关键词

andbreakdoelse
elseifendfalsefor
functionifinlocal
nilnotorrepeat
returnthentrueuntil
whilegoto

其它运算符

操作符描述实例
连接两个字符串a…b ,其中 a 为 "Hello " , b 为 “World”, 输出结果为 “Hello World”。
#一元运算符,返回字符串或表的长度。#“Hello” 返回 5

数据类型

数据类型描述
nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean包含两个值:false和true。lua中数字0是true
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示
function由 C 或 Lua 编写的函数
userdata表示任意存储在变量中的C数据结构
thread表示执行的独立线路,用于执行协同程序
tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。索引从1开始

Lua 把 false 和 nil 看作是 false,其他的都为 true,数字 0 也是 true

--string
a=[[
<p>表示一块字符串</p>
]]
b="123"
a,b=b,a --交换a,b的值--table
local tbl2 = {"apple", "pear", "orange", "grape"}
a = {}
a["key"] = "value"
print(a.key) --当索引为字符串类型时可这样用
a[10]=22
for k, v in pairs(a) doprint(k .. " : " .. v)
end
a=nil --移除引用,垃圾回收--function
function factorial1(n)local jk=5print("局部变量jk: "..jk)if n == 0 thenreturn 1elsereturn n * factorial1(n - 1)end
end
print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))--匿名函数
function testFun(tab,fun)for k ,v in pairs(tab) doprint(fun(k,v));end
endtab={key1="val1",key2="val2"};
testFun(tab,
function(key,val)--匿名函数return key.."="..val;
end
);

2. 输入输出

-- 提示用户输入
print("请输入一些文本:")
-- 读取用户输入的一整行
local userInput = io.read("*line")
-- 输出用户输入的内容
print("您输入的是:" .. userInput)

3. 分支结构与循环结构

if

a = 100
if( a == 10 ) thenprint("a 的值为 10" )
elseif( a == 20 ) then   print("a 的值为 20" )
elseif( a == 30 ) thenprint("a 的值为 30" )
elseprint("没有匹配 a 的值" )
end
print("a 的真实值为: ", a )

for

--[[ 数值for
var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。
exp3 是可选的,如果不指定,默认为1。
for var=exp1,exp2,exp3 do<执行体> 
end
]]function f(x)  print("function")  ;return x*2  ;
end  
for i=0,f(5),2 do print(i)  --f(5)只在开始时执行一次
end--[[ 泛型for
a = {"one", "two", "three"}
for i, v in ipairs(a) doprint(i, v)
end 
]]

在这里插入图片描述

repeat…until

--[ 变量定义 --]
a = 10
--[ 执行循环 --]
repeatprint("a的值为:", a)a = a + 1
until( a > 15 )

在这里插入图片描述

while

-- 定义变量
a = 10-- while 循环
while( a < 20 )
doprint("a 的值为:", a)a=a+1if( a > 15)then--[ 使用 break 语句终止循环 --]breakend
end

4. 函数

在函数参数列表中使用三点 ... 表示函数有可变的参数

  • select(‘#’, …) 返回可变参数的长度。
  • select(n, …) 用于返回从起点 n 开始到结束位置的所有参数列表。
function average(...)result = 0local arg={...} -- {...} 表示一个由所有变长参数构成的数组  for i,v in ipairs(arg) doresult = result + vendprint("总共传入 " .. select("#",...) .. " 个数")print(select(1,...))return result/select("#",...)endprint("平均值为",average(10,5,3,4,5,6))

在这里插入图片描述

5. 元表与元方法

__add

t={a=1}
mt={	--元表__add=function (a,b)return a.a+bend
}
setmetatable(t,mt) -- 把mt设为t的元表 
--t的加法被mt的加法替换了print(t+1) --2

__index

t={a=1}
mt={__index=function (table,key)return 123end
}
setmetatable(t,mt) -- 把mt设为t的元表 
print(t['abc']) --123
--t的键没有abc或者t不是table时,会调用__index元方法t2={a=15}
mt2={__index={abc=456,def=789,}
}
setmetatable(t2,mt2) -- 把mt设为t的元表 
print(t2['abc']) --456

__newindex

t={a=1}
mt={__newindex=function (table,key,value)-- rawset(table,key,value)-- 不能table[key]=value,因为赋值操作也会调用__newindex最后导致堆栈溢出end
}
setmetatable(t,mt) -- 把mt设为t的元表 
t.abc=123 --t原本不存在键abc,会调用__newindex方法
print(t['abc']) --nil
--t不存在这个key或t不是表时,会调用__newindex元方法

语法糖

t={a=0,add=function(table,sum)table.a=table.a+sumend
}
t:add(10)
-- 等价于t.add(t,10)
print(t['a'])
bag={}
bmt={put=function(t,item)table.insert(t.items,item)end,take=function(t,key)return table.remove(t.items,key)end,list=function(t)return table.concat(t.items,",")end,clear=function(t)t.items={}end
}
bmt['__index']=bmt
function bag.new()local t={items={}}setmetatable(t,bmt)return t
end
local b=bag.new()
b:put("apple")
b:put("banana")
b:put("banana")
print(b:take())-- banana
print(b:list())-- apple,banana
b:clear()

6. 面向对象

Lua 的模块是由变量、函数等已知元素组成的 table

Lua 中的类可以通过 table + function 模拟出来。

至于继承,可以通过 metatable 模拟出来

-- 定义 Person 类
Person = {name = "", age = 0}-- Person 的构造函数
function Person.new(self,name, age)local obj = {}  -- 创建一个新的表作为对象setmetatable(obj, self)  -- 设置元表,使其成为 Person 的实例self.__index = self  -- 设置索引元方法,指向 Personobj.name = nameobj.age = agereturn obj
end-- 添加方法:打印个人信息
function Person.introduce(self)print("My name is " .. self.name .. " and I am " .. self.age .. " years old.")
end
p=Person:new("zhangsan", 100)
p.introduce(p)
p2=Person:new("lisi", 80)
p2.introduce(p2)
http://www.whsansanxincailiao.cn/news/32040966.html

相关文章:

  • 做网站付款流程/外贸营销网站建设
  • 巩义网站建设托管/上海seo网站优化
  • 云服务器做网站要备案吗/系统优化
  • 网站中有一个非常著名的原则/百度网盘下载
  • 手机网址是什么/seo关键词优化推广哪家好
  • 专业制作行驶证/优化设计五年级上册语文答案
  • 公司网站工程案例怎么做/hyein seo是什么牌子
  • 临安建办网站/seo网站推广教程
  • 门户网站代做/2345导航网址
  • ps在线网站/海南网站推广
  • 怎么做自己的视频网站/百度电脑版下载官网
  • 做娱乐网站少10个页面/第三方关键词优化排名
  • 建设企业网站服务/seo公司的选上海百首网络
  • 什么网站教做美食/线上营销怎么做
  • 赤峰市做网站建设的公司/营销网络
  • 静态旅游网站开发论文/网络营销的主要传播渠道是
  • 做分析图的地图网站/企业培训课程视频
  • wordpress建站怎么学/seo实战培训学校
  • 做网站需要会哪些编程语言/大数据营销的案例
  • wordpress网站背景/推广赚钱平台有哪些
  • 网站建设 图片问题/惠州网站排名提升
  • 做搜狗pc网站优/谷歌seo怎么做
  • 微小店网站建设平台/百度seo关键词点击软件
  • 甲级设计院加盟分公司/班级优化大师免费下载电脑版
  • 潍坊高端网站开发/百度公司推广电话
  • 个人建网站一般多少钱/重庆网站seo搜索引擎优化
  • 承接政府网站建设/全国最好网络优化公司
  • b2c网站推广方案/2022磁力链接搜索引擎推荐
  • 南昌旅游集团网站建设/百度贴吧官网网页
  • 大连做网站比较好的公司/活动软文怎么写