原创大约 4 分钟
- 编程语言81
- 案例70
- 大数据55
- 中间件48
- 电子书42
- 数据库42
- Go30
- 开源27
- 人工智能25
- CI&CD24
- 软件工程23
- 设计模式23
- Python21
- 数据仓库21
- 任正非20
- Docker20
- 杂项20
- JMeter17
- 微服务15
- 移动端15
- HarmonyOS15
- MySQL15
- Flink14
- 节略章节合辑13
- 软件许可证13
- 原型解构13
- 数据库设计13
- 新零售13
- 分库分表13
- 应用12
- 社交平台12
- 关系推荐12
- 数据科学基础12
- 关于11
- 胡言乱语11
- Linux11
- Clickhouse11
- 集成10
- 原型工具10
- 开发过程10
- Java10
- Spark10
- RocketMQ10
- Axure9
- U-AIGC9
- UI原型9
- Scala8
- Groovy8
- 兼容GPL的许可证8
- 产品经理8
- 智能硬件8
- 大数据风控8
- 爬虫8
- MongoDB8
- Kotlin8
- LUA8
- 程序员的数学7
- 短视频7
- APP7
- Hive7
- 七大设计原则7
- ArkTS7
- GPT6
- API6
- Hadoop6
- HBase6
- 领域模型6
- Kafka6
- Spring Security6
- Java高并发6
- 关于我5
- 开源常识5
- 车联网5
- Redis5
- Aviator5
- Flume5
- Caffeine5
- Google Guava5
- 毛泽东选集4
- 工具4
- 特色农产品4
- 文档许可证4
- 自由文档许可证4
- 其他许可证4
- 可穿戴产品4
- 流水线4
- Elasticsearch4
- Neo4j4
- 技术论文3
- 我写的书3
- 跑腿闪送3
- 设计心理学3
- 分布式3
- Android3
- 不兼容GPL的许可证3
- 电商3
- PC端3
- Apache Commons3
- Drools2
- 非自由软件许可证2
- 用户研究2
- 个人爱好1
- 个人能力1
- 超级个体1
- 第一卷1
- AIGC1
- 视觉交互设计1
- 数学1
- 站点部署1
- 智能穿戴1
- Balsamiq Mockups1
- Apache1
- AB压测1
- 第二卷1
- 第三卷1
- 第四卷1
- captcha1
- FaceRecognition1
- 地图1
- OSS1
- 支付1
- PUSH1
- OAuth 2.01
- SMS1
- weather1
- 综合性交互设计1
- 复杂设计1
- 情感设计1
- 云原生1
- 全局唯一ID1
- 幂等性1
- 事务1
- 瀑布模型1
- Azkaban1
- Canal1
- FileBeat1
- Sqoop1
- Zepplin1
- Lua1
- 加密算法1
- SSL1
- TLS1
- CA证书1
- HTTPS1
- Spring AI1
- 用户体验五要素1
- UFD分析法1
- 产品类型1
- 盈利模式1
- 可行性判断1
- 定价策略1
- 黑盒测试1
- 灰度测试1
- AB测试1
- PEST1
- SWOT1
- MRD1
- PRD1
- KANO模型分析1
- 需求价值分析1
- 车机交互1
- 分布式事务1
- Matplotlib1
- Pandas1
- Numpy1
- Scipy1
- Impala1
- 合成复用原则1
- 迪米特法则1
- 依赖反转原则1
- 接口隔离原则1
- 里氏替换原则1
- 开闭原则1
- 单一职责原则1
- 敏捷过程1
- RUP1
- UML1
- ERD1
- ElasticSearch1
- Cangjie1
- Cache1
- EventBus1
- common-fileupload1
- commons-lang31
原创大约 8 分钟
Lua中其实没有类和对象的概念,但它用table
+ function
模拟出了某些面向对象的特性。
-- 元类
Person = {name = "lixingyun", age = 19, gender = "male"}
-- 定义类的结构
function Person:new(person, name, age, gender)
person = person or {}
setmetatable(person, self)
self.__index = self
self.name = name or "lixingyun"
self.age = age or 0
self.gender = gender or "male"
return person
end
-- 定义类的方法
function Person:getName()
print("该用户为:", self.name)
end
-- 创建对象
p = Person:new (person, "wanglin", 20, "male")
-- 访问对象的属性
print(p.name)
print(p.age)
print(p.gender)
-- 调用对象的方法
p:getName()
-- User继承了Person
User = Person:new()
function User:new (user, address)
user = user or Person:new(user, address)
setmetatable(user, self)
self.__index = self
self.address = address or "娆疆"
return user
end
-- 派生类方法getArea
function User:getArea ()
print("该用户目前在:", self.address)
end
-- 创建对象
u = User:new(user, "大唐")
u:getArea()
原创大约 1 分钟
IO
官方文档中的IO处理分为隐式文件处理(Implicit File Handles)
和显式文件处理(Explicit File Handles)
两种模式。
-
隐式文件处理(Implicit File Handles
):需要设置默认输入
和默认输出
,后续的读写操作由默认
文件完成。 -
显式文件处理(Explicit File Handles
):需要返回一个句柄
,后续的操作都通过这个返回的句柄
完成。
原创大约 3 分钟
string
-- 2个方括号[[]]的作用类似于Python或Groovy中三引号字符串的作用
-- 声明变量不需要任何类型,直接赋值就行
html = [[
<html>
<head>test.lua</head>
<body>
this is a test.lua file
</body>
</html>
]]
print(html)
-- 当字符串和数字执行算术操作时,Lua会尝试将字符串转成一个数字,不过这个字符串要是一个数字字符串才行,如果是字母的会报错
print("1" + 1)
print("1" - 1)
print("1" * 2)
print("1" / 2)
-- 下面的语句会报错
-- print("a" / 2)
-- # 用来计算字符串的长度,只要放在字符串前面就行了
print(#"hello lua")
-- 如果字符串中包含中文,#就不能用了
print("【你好,lua】的字符个数是:" .. #"你好,lua!")
print("【你好,lua】的字符个数是:" .. string.len("你好,lua!"))
-- print("【你好,lua】的字符个数是:" .. utf8.len("你好,lua!"))
-- Lua提供了很多方法来支持字符串的操作,常用的如下
print(string.upper("lua"))
print(string.lower("lua"))
print(string.reverse("lua"))
-- 找到则返回起始索引与结束索引
print(string.find("hello lua", "lua"))
print(string.format("hello %s", "lua"))
-- 下标从1开始
print(string.sub("lua is a script language", 8, -1))
-- ASCII码转换为字符
print(string.char(65))
print(string.rep("lua", 3))
原创大约 7 分钟
数据类型
虽然官方强调Lua是一种动态类型的语言,它没有类型定义,所有的值都有自己的类型。但Lua的值依然没有脱离八种基本类型的范围。
数据类型 | 描述 |
---|---|
nil | 表示一个缺失的值(相等于null),因为nil和false都可以使条件为假,所以它们统称为假值 |
boolean | 只有true和false两个值 |
number | 既表示64位整数,又表示64位浮点数 |
string | 是一个不可变的8位字节序列 |
function | C 或Lua 编写的函数 |
userdata | 任意一个存储在变量中的C 数据结构。它有两种类型:完整用户数据(full userdata ,是一块内存对象)和轻量用户数据 (light userdata ,表示C 指针的值) |
thread | 表示独立的执行线程,用于实现协程 |
table | 表示关联数组,以除了nil 和NaN 之外的任何Lua 值作为索引,可用于表示普通数组、列表、符号表、集合、记录、图形、树等 |
原创大约 3 分钟