关于申请建设网站申请报告/最好最全的搜索引擎

关于申请建设网站申请报告,最好最全的搜索引擎,中国林业建设协会网站,抄袭网站设计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.mzph.cn/diannao/72086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用DeepSeek实现自动化编程:类的自动生成

目录 简述 1. 通过注释生成C类 1.1 模糊生成 1.2 把控细节&#xff0c;让结果更精准 1.3 让DeepSeek自动生成代码 2. 验证DeepSeek自动生成的代码 2.1 安装SQLite命令行工具 2.2 验证DeepSeek代码 3. 测试代码下载 简述 在现代软件开发中&#xff0c;自动化编程工具如…

【SpringBoot】数据访问技术spring Data、 JDBC、MyBatis、JSR-303校验

Spring Boot 数据访问技术及特性 目录标题 Spring Boot 数据访问技术及特性摘要1. 引言2. Spring Data架构与原理2.1 Spring Data概述2.2 Spring Data核心组件2.3 Spring Boot与Spring Data的集成机制 3. Spring Boot与JDBC的整合3.1 JDBC整合流程3.2 数据源自动配置3.3 JdbcTe…

JVM线程分析详解

java线程状态&#xff1a; 初始(NEW)&#xff1a;新创建了一个线程对象&#xff0c;但还没有调用start()方法。运行(RUNNABLE)&#xff1a;Java线程中将就绪&#xff08;ready&#xff09;和运行中&#xff08;running&#xff09;两种状态笼统的称为“运行”。 线程对象创建…

spring整合mybatis详细步骤

spring整合mybatis的全部过程(整合方式一 &#xff1a;简单版) 1.在pom.xml中导入mybatis相应的jar包&#xff1a; (2) < dependency > < groupId >org.mybatis</ groupId > < artifactId >mybatis</ artifactId > < version >3.5.3&…

ai-2、机器学习之线性回归

机器学习之线性回归 1、机器学习2、线性回归2.1、梯度下降法 3、python下调用scikit-learn 1、机器学习 2、线性回归 ####所以y可以当成我们需要的结果&#xff0c;根据公式可以求的y一撇的值更小&#xff0c;所以更接近需要的结果&#xff0c;所以y一撇拟合性更好 2.1、梯度下…

Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存

Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存 目录 Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存 一、简单介绍 二、简单介绍 camera 三、安装 camera 四、简单案例实现 五、关键代码 一、简单…

【造个轮子】使用Golang实现简易令牌桶算法

本文目录 1. 令牌桶算法2. 调用第三方库实现令牌桶3. 手撕令牌桶 前言&#xff1a;之前在Bluebell社区项目中&#xff0c;我们使用了开源的库来实现令牌桶限流&#xff0c;这次我们试着使用Go来手撕实现下令牌桶算法。 1. 令牌桶算法 为了防止网络拥塞&#xff0c;需要限制流…

C#开发的Base64编码及解码完整源码及注意事项

在软件开发时&#xff0c;经常用Base64编码和解码功能。本文介绍一个简单易用的Base64 编码和解码工具&#xff0c;顾名思义&#xff0c;就是简单快捷地进行 Base64 代码的解码或编码操作。您的数据可以轻松地编码为 Base64 编码&#xff0c;也可以解码为可读的格式。传输数据时…

【Linux第一弹】Linux基础指令(上)

目录 1.ls指令 1.1 ls使用实例 2.pwd指令 3.cd指令 3.1 cd使用实例 4.touch指令 4.1touch使用实例 5.mkdir指令 5.1mkdir使用实例 6.rmdir指令和rm指令 6.1 rmdir指令使用实例->: 6.2 rm指令使用实例 7.man指令 8.cp指令 8.1 cp 使用实例 9.mv指令 9.1mv使用…

图片爬取案例

修改前的代码 但是总显示“失败” 原因是 修改之后的代码 import requests import os from urllib.parse import unquote# 原始URL url https://cn.bing.com/images/search?viewdetailV2&ccidTnImuvQ0&id5AE65CE4BE05EE7A79A73EEFA37578E87AE19421&thidOIP.TnI…

使用自动化运维工具 Ansible 集中化管理服务器

一、概述 Ansible 是一款为类 Unix 系统开发的自由开源的配置和自动化工具 官方网站:https://www.ansible.com/ Ansible 成立于 2013 年,总部设在北卡罗来纳州达勒姆,联合创始人 ad Ziouani 和高级副总裁 Todd Barr都是红帽的老员工。Ansible 旗下的开源软件 Ansible 十分…

CMU15445(2023fall) Project #2 - Extendible Hash Index 匠心分析

胡未灭&#xff0c;鬓已秋&#xff0c;泪空流 此生谁料 心在天山 身老沧州 ——诉衷情 完整代码见&#xff1a; SnowLegend-star/CMU15445-2023fall: Having Conquered the Loftiest Peak, We Stand But a Step Away from Victory in This Stage. With unwavering determinati…

会话与会话管理:Cookie与Session的深度解析

一、什么是会话&#xff1f; 二、Cookie&#xff1a;客户端存储技术 1. Cookie的工作原理 2、在后端设置cookie 3、在前端设置cookie 三、浏览器开启了cookie禁用怎么办&#xff1f; 一、什么是会话&#xff1f; 会话&#xff08;Session&#xff09;是指一个用户与服务器之间…

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解 1 冯诺依曼体系结构1.1 基本概念理解1.2 CPU只和内存打交道1.3 为什么冯诺依曼是这种结构1.4 理解数据流动 2 操作系统2.1 什么是操作系统2.2 设计OS的目的2.3 操作系统小知识点2.4 如何理解"管理"2.5 系统调用和…

51c自动驾驶~合集52

我自己的原文哦~ https://blog.51cto.com/whaosoft/13383340 #世界模型如何推演未来的千万种可能 驾驶世界模型&#xff08;DWM&#xff09;&#xff0c;专注于预测驾驶过程中的场景演变&#xff0c;已经成为追求自动驾驶的一种有前景的范式。这些方法使自动驾驶系统能够更…

自然语言处理:词频-逆文档频率

介绍 大家好&#xff0c;博主又来给大家分享知识了。本来博主计划完成稠密向量表示的内容分享后&#xff0c;就开启自然语言处理中文本表示的讲解。可在整理分享资料的时候&#xff0c;博主发现还有个知识点&#xff0c;必须得单独拎出来好好说道说道。 这就是TF-IDF&#xf…

架构思维:架构的演进之路

文章目录 引言为什么架构思维如此重要架构师的特点软件架构的知识体系如何提升架构思维大型互联网系统架构的演进之路一、大型互联网系统的特点二、系统处理能力提升的两种途径三、大型互联网系统架构演化过程四、总结 引言 在软件开发行业中&#xff0c;有很多技术人可能会问…

DeepSeek-R1-Zero:基于基础模型的强化学习

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 DeepSeek大模型技术系列四DeepSeek大模型技术系列四》DeepSeek-…

Metal学习笔记八:纹理

到目前为止&#xff0c;您已经学习了如何使用片段函数和着色器为模型添加颜色和细节。另一种选择是使用图像纹理&#xff0c;您将在本章中学习如何操作。更具体地说&#xff0c;您将了解&#xff1a; • UV 坐标&#xff1a;如何展开网格&#xff0c;以便可以对其应用纹理。 •…

threeJS——安装以及三要素

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装二、三要素1.场景1.1创建场景1.2向场景添加元素1.3场景属性 2.相机2.1相机特点2.2正交相机2.3空间布局2.4小姐操作 3.渲染器 总结 前言 本章简单介绍前…