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

网站开发专业分析东台市住房和城乡建设局闷网站

网站开发专业分析,东台市住房和城乡建设局闷网站,做网站优化的价格,wordpress网站音乐播放器文章目录 简记变量数据类型运算符算术运算符关系运算符逻辑运算符杂项运算符 列表(表)表格操作表连接插入和删除排序表 模块元表__index 元方法实例 总结__newindex 元方法实例实例 为表添加操作符实例 __call 元方法实例 __tostring 元方法实例 简记 lua下标从1开始迭代器pai… 文章目录 简记变量数据类型运算符算术运算符关系运算符逻辑运算符杂项运算符 列表(表)表格操作表连接插入和删除排序表 模块元表__index 元方法实例 总结__newindex 元方法实例实例 为表添加操作符实例 __call 元方法实例 __tostring 元方法实例 简记 lua下标从1开始迭代器pairs/ipairs函数是一等公民 变量 lua中变量是对值的引用 默认全局变量 局部变量添加关键字local 数据类型 nil用于将值与有一些数据或没有无数据区分开来。boolean包括 true 和 false 作为值。 一般用于条件检查。number表示实数双精度浮点数。string表示字符数组。function表示用 C 或 Lua 编写的方法。userdata表示任意 C 数据。thread代表独立的执行线程用于实现协程。table表示普通数组、符号表、集合、记录、图形、树等实现关联数组。 它可以保存任何值nil 除外。 运算符 算术运算符 下表显示了 Lua 语言支持的所有算术运算符。 假设变量 A 持有 10 并且变量 B 持有 20 然后 运算符描述示例添加两个操作数A B 将得到 30-从第一个操作数中减去第二个操作数A - B 将得到 -10*两个操作数相乘A * B 将得到 200/分子除以分母B / A 将得到 2%取模运算符和整数除法后的余数B % A 将得到 0^指数运算符取指数A^2 将得到 100-一元 - 运算符作为否定-A 将得到 -10 关系运算符 下表显示了 Lua 语言支持的所有关系运算符。 假设变量 A 持有 10 并且变量 B 持有 20 然后 运算符描述示例检查两个操作数的值是否相等如果是则条件为真。(A B) is not true.~检查两个操作数的值是否相等如果值不相等则条件为真。(A ~ B) is true.检查左操作数的值是否大于右操作数的值如果是则条件为真。(A B) is not true.检查左操作数的值是否小于右操作数的值如果是则条件为真。(A B) is true.检查左操作数的值是否大于或等于右操作数的值如果是则条件为真。(A B) is not true.检查左操作数的值是否小于或等于右操作数的值如果是的则条件将变为true。(A B) is true. 逻辑运算符 下表显示了 Lua 语言支持的所有逻辑运算符。 假设变量 A 为真变量 B 为假则 − 运算符描述示例and称为逻辑与运算符。 如果两个操作数都不为零则条件为真。(A and B) is false.or称为逻辑或运算符。 如果两个操作数中的任何一个非零则条件变为真。(A or B) is true.not称为逻辑非运算符。用于逆转其操作数的逻辑状态。 如果条件是 true则逻辑非运算符结果会是 false。!(A and B) is true. 杂项运算符 Lua 语言支持的其他运算符包括 concatenation 和 length。 运算符描述示例…连接两个字符串。a…b 其中 a 是Hellob 是World将返回Hello World。#返回字符串或表格长度的一元运算符。#“Hello” 将返回 5 列表(表) 表是lua中唯一的数据结构 可以用数字或者字符串做key --样本表初始化 mytable {}表格操作 有用于表格操作的内置函数它们列在下表中。 序号方法 用途1**table.concat (table [, sep [, i [, j]]])**根据给定的参数连接表中的字符串。 有关详细信息请参见示例。2**table.insert (table, [pos,] value)**在表中的指定位置插入一个值。3**table.maxn (table)**返回最大的数字索引。4**table.remove (table [, pos])**从表中删除值。5**table.sort (table [, comp])**根据可选的比较器参数对表进行排序。 让我们看一下上述函数的一些示例。 表连接 我们可以使用 concat 函数来连接两个表如下所示 − fruits {banana,orange,apple}-- returns concatenated string of table print(Concatenated string ,table.concat(fruits))--concatenate with a character print(Concatenated string ,table.concat(fruits,, ))--concatenate fruits based on index print(Concatenated string ,table.concat(fruits,, , 2,3)) 当我们运行上述程序时我们将得到以下输出 − Concatenated string bananaorangeapple Concatenated string banana, orange, apple Concatenated string orange, apple插入和删除 在表格中插入和删除项目是最常见的表格操作。 下面解释一下。 fruits {banana,orange,apple}-- insert a fruit at the end table.insert(fruits,mango) print(Fruit at index 4 is ,fruits[4])--insert fruit at index 2 table.insert(fruits,2,grapes) print(Fruit at index 2 is ,fruits[2])print(The maximum elements in table is,table.maxn(fruits))print(The last element is,fruits[5])table.remove(fruits) print(The previous last element is,fruits[5]) 当我们运行上述程序时我们将得到以下输出。− Fruit at index 4 is mango Fruit at index 2 is grapes The maximum elements in table is 5 The last element is mango The previous last element is nil排序表 我们经常需要按特定顺序对表格进行排序。 排序函数按字母顺序对表中的元素进行排序。 下面显示了一个示例。 fruits {banana,orange,apple,grapes}for k,v in ipairs(fruits) doprint(k,v) endtable.sort(fruits) print(sorted table)for k,v in ipairs(fruits) doprint(k,v) end 当我们运行上述程序时我们将得到以下输出 − 1 banana 2 orange 3 apple 4 grapes sorted table 1 apple 2 banana 3 grapes 4 orange模块 require 模块名元表 setmetatable(table,metatable): 对指定 table 设置元表(metatable)如果元表(metatable)中存在 __metatable 键值setmetatable 会失败。getmetatable(table): 返回对象的元表(metatable)。 以下实例演示了如何对指定的表设置元表 mytable {} *-- 普通表* mymetatable {} *-- 元表* setmetatable(mytable,mymetatable) *-- 把 mymetatable 设为 mytable 的元表*以上代码也可以直接写成一行 mytable setmetatable({},{})以下为返回对象元表 getmetatable(mytable) -- 这会返回 mymetatable__index 元方法 这是 metatable 最常用的键。 当你通过键来访问 table 的时候如果这个键没有值那么Lua就会寻找该table的metatable假定有metatable中的__index 键。如果__index包含一个表格Lua会在表格中查找相应的键。 如果__index包含一个函数的话Lua就会调用那个函数table和键会作为参数传递给函数。 __index 元方法查看表中元素是否存在如果不存在返回结果为 nil如果存在则由 __index 返回结果。 实例 mytable setmetatable({key1 value1}, {__index function(mytable, key)if key key2 thenreturn metatablevalueelsereturn nilendend })print(mytable.key1,mytable.key2)实例输出结果为 value1 metatablevalue实例解析 mytable 表赋值为 {key1 “value1”}。 mytable 设置了元表元方法为 __index。 在mytable表中查找 key1如果找到返回该元素找不到则继续。 在mytable表中查找 key2如果找到返回 metatablevalue找不到则继续。 判断元表有没有__index方法如果__index方法是一个函数则调用该函数。 元方法中查看是否传入 “key2” 键的参数mytable.key2已设置如果传入 “key2” 参数返回 “metatablevalue”否则返回 mytable 对应的键值。 ​ 我们可以将以上代码简单写成 mytable setmetatable({key1 value1}, { __index { key2 metatablevalue } }) print(mytable.key1,mytable.key2)总结 Lua 查找一个表元素时的规则其实就是如下 3 个步骤: 1.在表中查找如果找到返回该元素找不到则继续2.判断该表是否有元表如果没有元表返回 nil有元表则继续。3.判断元表有没有 __index 方法如果 __index 方法为 nil则返回 nil如果 __index 方法是一个表则重复 1、2、3如果 __index 方法是一个函数则返回该函数的返回值。 __newindex 元方法 __newindex 元方法用来对表更新__index则用来对表访问 。 当你给表的一个缺少的索引赋值解释器就会查找__newindex 元方法如果存在则调用这个函数而不进行赋值操作。 实例 mymetatable {} mytable setmetatable({key1 value1}, { __newindex mymetatable })print(mytable.key1)mytable.newkey 新值2 print(mytable.newkey,mymetatable.newkey)mytable.key1 新值1 print(mytable.key1,mymetatable.key1)以上实例执行输出结果为 value1 nil 新值2 新值1 nil以上实例中表设置了元方法 __newindex在对新索引键newkey赋值时mytable.newkey “新值2”会调用元方法而不进行赋值。而如果对已存在的索引键key1则会进行赋值而不调用元方法 __newindex。 以下实例使用了 rawset 函数来更新表 实例 mytable setmetatable({key1 value1}, {__newindex **function**(mytable, key, value)rawset(mytable, key, **\**..value..**\**)**end** })mytable.key1 new value mytable.key2 4print(mytable.key1,mytable.key2)以上实例执行输出结果为 new value 4为表添加操作符 以下实例演示了两表相加操作 实例 -- 计算表中最大值table.maxn在Lua5.2以上版本中已无法使用 -- 自定义计算表中最大键值函数 table_maxn即返回表最大键值 function table_maxn(t)local mn 0for k, v in pairs(t) doif mn k thenmn kendendreturn mn end-- 两表相加操作 mytable setmetatable({ 1, 2, 3 }, {__add function(mytable, newtable)for i 1, table_maxn(newtable) dotable.insert(mytable, table_maxn(mytable)1,newtable[i])endreturn mytableend })secondtable {4,5,6}mytable mytable secondtablefor k,v in ipairs(mytable) do print(k,v) end以上实例执行输出结果为 1 1 2 2 3 3 4 4 5 5 6 6add 键包含在元表中并进行相加操作。 表中对应的操作列表如下(**注意******是两个下划线) 模式描述__add对应的运算符 ‘’.__sub对应的运算符 ‘-’.__mul对应的运算符 ‘*’.__div对应的运算符 ‘/’.__mod对应的运算符 ‘%’.__unm对应的运算符 ‘-’.__concat对应的运算符 ‘…’.__eq对应的运算符 ‘’.__lt对应的运算符 ‘’.__le对应的运算符 ‘’. __call 元方法 __call 元方法在 Lua 调用一个值时调用。以下实例演示了计算表中元素的和 实例 -- 计算表中最大值table.maxn在Lua5.2以上版本中已无法使用 -- 自定义计算表中最大键值函数 table_maxn即计算表的元素个数 function table_maxn(t)local mn 0for k, v in pairs(t) doif mn k thenmn kendendreturn mn end-- 定义元方法__call mytable setmetatable({10}, {__call function(mytable, newtable)sum 0for i 1, table_maxn(mytable) dosum sum mytable[i]endfor i 1, table_maxn(newtable) dosum sum newtable[i]endreturn sumend }) newtable {10,20,30} print(mytable(newtable))以上实例执行输出结果为 70__tostring 元方法 __tostring 元方法用于修改表的输出行为。以下实例我们自定义了表的输出内容 实例 mytable setmetatable({ 10, 20, 30 }, {__tostring function(mytable)sum 0for k, v in pairs(mytable) dosum sum vendreturn 表所有元素的和为 .. sumend }) print(mytable)以上实例执行输出结果为 表所有元素的和为 60
http://www.hkea.cn/news/14417207/

相关文章:

  • 网站开发 源代码长沙工程招标公司
  • 浙江宏兴建设有限公司网站院校网站建设对比分析实训报总结
  • 西安都蓝网站建设wordpress 绑定多个二级域名
  • 怎么做网站后期推广wordpress安装插件慢
  • 阜宁网站制作选哪家人事外包公司
  • 网站维护服务公司上海建站模板网站
  • 解答网站内容优化策略建设项目验收 网站
  • 电动车网站建设wordpress 管理员权限
  • 宁德市住房和城乡建设局网站打不开简单网页制作教程视频
  • 建设科技网络网站的意义和目的可以看小视频的浏览器
  • 网站制作软件排名wordpress 报名
  • 住房和城乡建设部网站准考证网站软件免费下载安装
  • 个人网站 可以自己做服务器vs2010 网站开发
  • 粉丝帮女流做的网站wordpress完成用户注册
  • 商城手机网站建设给公司创建网站流程
  • 网站制作公司 知道万维科技个人公众号
  • 商城网站如何提高收录1g内存vps 开电影网站
  • 国外有哪些网站是做弱电的民宿网站建设问卷调查
  • 个人站长做网站值得玩的网页游戏
  • 做网站推广工作赚钱吗仙桃做企业网站的
  • 如何用本地视频做网站门户网站php源码
  • 宝塔面板wordpress多站点闵行区学生成长空间
  • 360免费建站怎么进不去婚礼设计方案网站
  • 网站建设课程设计实验指导书成都网站建设新网创想
  • 用什么做网站更快捷方便开网店3个月来亏了10万
  • 网站建设公司简介模板下载哈尔滨网站制作网页
  • 苏州网站建设制度seo外链增加
  • 吴江区建设工程招标网站注册安全工程师报名时间2022官网
  • 深圳网站建设服务商哪些好?网站信息备案查询系统
  • 如何建微信微商城网站制作小程序的公司