Lua学习笔记(一)

楼主是一个wower从mc开荒开始就玩了,当时还是一个高二的学生,高三要高考了整整一年基本都没有玩,只是偶尔偷偷回家玩一下。楼主是一个pvp爱好者,自从有了jjc(arena)以后基本就不打副本了(除了s4赛季 为了4+4 古头 打个太阳井,黑庙什么,之后貌似也就是贼法法牧骑那版英雄火鹰裤子),顺便说下楼主是一个法师,之前afk了一段时间,上赛季回来重新玩,目前玩法师和奶萨,竞技场里经常被x的抬不起头,后来在twitch上向大神们学习了一下,感觉抗揍多了操作也好多了。当然和一些竞技场插件有着密不可分的关系。这是国外的一个插件网站,上面有好多很好的单体,不要积分随便下载http://www.curse.com/addons/wow 。可是呢毕竟插件是别人做的,跟自己想法还是会有一定出入,所以楼主决定自学以下lua 。

好啦废话不多说了,开始干活。首先我们需要下载一个lua解释器(http://www.lua.org/download.html)包含了windows、linux、macOS,安装很简单就不详述了,或者大家可以在http://wowprogramming.com/utils/weblua 这个网站上使用在线的lua解释器。
第一个程序必然是Hello world! ,在lua中很简单,大家只要输入
print("hello world")

就好啦。对于lua语言来说,最后的分号可以省略。

一. 基本类型

     1. number :数字类型,包含所有数字,如十六进制数和科学记数法记数。
     2. string : 字符串类型。
     3. boolean :布尔类型(true or false)。
     4. function :函数
     5. table : 哈希表和数组的混合类型
     6. thread : 线程
     7. userdata :数据结构包装器

    我们可以利用 type()函数来获得一个给定值的类型。

例:

a = 100
print(type(a))

输入后 我们会得到答案为 number

a = "Hello world"
print(type(a))

输入后我们会得到答案为 string

需要注意的当我们没有定义一个变量的时候,使用type(something) 函数会返回nil。

二. 比较运算符

 1. 等于                                                ==
 2. 大于                                                >
 3. 小于                                                <
 4. 大于等于                                             >=
 5. 小于等于                                             <=
 6. 不等于                                               ~=

比较结果会返回一个布尔值(true or false)。
当我们比较不同类型的变量时,如:

a = "a"
b = 10
print(a == b)
print(a > b) --print(a < b)同理
print(a >= b) --print(a <= b)同理
print(a ~= b)

显然既然类型不同当然 a == b 会返回false , a ~= b 会返回true。但是 a > b 和 a >= b 会报错,”stdin:1: attempt to compare number with string” (尝试比较数字和字符串)。所以lua中不支持不同类型之间的比较。

三. 字符串的一些操作

a.字符串比较

"a" > "b"   --false
"abbbc" > "abbbd"   -- false 对比每一个字符,直到出现不一样的
"b" > "abbbbbb" -- true "b" > "a" 所以就不用继续比较
"ab" > "a"  --true 如果字头相同,长度大的更大
"a" > "A"   --true 小写字母比大写字母大

b.字符串连接

a = "hello"
b = "world"
c = a..b
print(c) -- helloworld

c. 类型转换

有时候我们需要将数字类型(number)转化为字符串类型(string),这时候我们可以用tostring()这个函数来实现

a = 100
b = tostring(a)
type(a) -- number a的类型不会发生变化
type(b) -- string

当我们连接一个字符串和数字的时候,系统会隐示(理解为默默的,偷偷的就好)的将number类型转换成string类型。

a = 100
b = "i have "
c = b..a
type(c) --string 

当然我们也会将一个字符串转换成数字类型,这时候我们可以用tonumber()函数来完成,如

a = "100"
b = tonumber(a)
print(b) --100
type(a) --string
type(b) --number

d.字符串类型的声明

a = "hello world" --应该避免在在引号中出现双引号,如需要出现请加上 \ 。
a1 = "\"hello world\"" -- 输出"hello world"
b = 'hello world' --和双引号一样,在单引号中不能出现单引号,如需出现请加上 \
c = [[hello world "hello world" 'hello world']] --可以在[[]]出现任何字符

e. 字符串长度

a = " hello world "
#a --输出13(包括空格的长度)
string.len(a) -- 同样是13

四. 块和组块

首先说明一下全局变量和局部变量的差别,目前我们声明的变量都属于全局变量,也就是说在这个lua文件中都是有效的。有时候我们不想让一些变量出现在整个文件中,这时候我们就要用到局部变量,在lua中用local关键字来声明一个局部变量

local a = 10

既然是局部变量,那这个a的作用范围是什么呢? lua默认每一行为一个块,也就是说过了这一行 a的值就不存在了。大家可以试试print(a),答案是nil。因为已经出了局部变量a的作用域了。那我们如何扩大一个块的行数呢? lua 中我们用 do….end来声明一个块,块中的每一行就是一个组块。

do
local a = 100
print(a) --输出100
end

print(a) -- 输出nil
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lua中文教程,原名:programming in lua 目录 版权声明..............i 译序..i 目录iii 第一篇语言.......1 第0章序言.......1 0.1 序言..........1 0.2 Lua的使用者................2 0.3 Lua的相关资源............3 0.4 本书的体例.................3 0.5 关于本书...3 0.6 感谢..........4 第1章起点.......5 1.1 Chunks.......5 1.2 全局变量...7 1.3 词法约定...7 1.4 命令行方式.................7 第2章类型和值9 2.1 Nil..............9 2.2 Booleans....9 2.3 Numbers...10 2.4 Strings......10 2.5 Functions.12 2.6 Userdata and Threads.12 第3章表达式..13 3.1 算术运算符...............13 3.2 关系运算符...............13 3.3 逻辑运算符...............13 3.4 连接运算符...............14 3.5 优先级.....15 3.6表的构造..15 第4章基本语法................18 4.1 赋值语句.18 4.2 局部变量与代码块(block)......19 4.3 控制结构语句...........20 Programming in Lua iv Copyright ® 2005, Translation Team, www.luachina.net 4.4 break和return语句......23 第5章函数......24 5.1 返回多个结果值.......25 5.2可变参数..27 5.3 命名参数.28 第6章再论函数................30 6.1 闭包........32 6.2 非全局函数...............34 6.3 正确的尾调用(Proper Tail Calls)...36 第7章迭代器与泛型for....40 7.1 迭代器与闭包...........40 7.2 范性for的语义...........42 7.3 无状态的迭代器.......43 7.4 多状态的迭代器.......44 7.5 真正的迭代器...........45 第8章编译·运行·调试47 8.1 require函数.................49 8.2 C Packages.................50 8.3 错误........51 8.4 异常和错误处理.......52 8.5 错误信息和回跟踪(Tracebacks)....53 第9章协同程序................56 9.1 协同的基础...............56 9.2 管道和过滤器...........58 9.3 用作迭代器的协同...61 9.4 非抢占式多线程.......63 第10章完整示例..............68 10.1 Lua作为数据描述语言使用........68 10.2 马尔可夫链算法.....71 第二篇 tables与objects........75 第11章数据结构..............76 11.1 数组......76 11.2 阵和多维数组.........77 11.3 链表......78 11.4 队列和双端队列.....78 11.5 集合和包.................80 11.6 字符串缓冲.............80 第12章数据文件与持久化..................84 12.1 序列化...86 Programming in Lua v Copyright ® 2005, Translation Team, www.luachina.net 第13章 Metatables and Metamethods...92 13.1 算术运算的Metamethods............92 13.2 关系运算的Metamethods............95 13.3 库定义的Metamethods................96 13.4 表相关的Metamethods................97 第14章环境..103 14.1 使用动态名字访问全局变量...103 14.2声明全局变量........104 14.3 非全局的环境.......106 第15章 Packages.............109 15.1 基本方法...............109 15.2 私有成员(Privacy)................111 15.3 包与文件................112 15.4 使用全局表............113 15.5 其他一些技巧(Other Facilities)...115 第16章面向对象程序设计.................118 16.1 类.........119 16.2 继承.....121 16.3 多重继承...............122 16.4 私有性(privacy)...................125 16.5 Single-Method的对象实现方法127 第17章 Weak表...............128 17.1 记忆函数...............130 17.2 关联对象属性.......131 17.3 重述带有默认值的表...............132 第三篇标准库134 第18章数学库................135 第19章 Table库...............136 19.1数组大小................136 19.2 插入/删除..............137 19.3 排序.....137 第20章 String库..............140 20.1 模式匹配函数.......141 20.2 模式.....143 20.3 捕获(Captures).146 20.4 转换的技巧(Tricks of the Trade)151 第21章 IO库..157 21.1 简单I/O模式..........157 21.2 完全I/O 模式........160 Programming in Lua vi Copyright ® 2005, Translation Team, www.luachina.net 第22章操作系统库........165 22.1 Date和Time............165 22.2 其它的系统调用...167 第23章 Debug库..............169 23.1 自省(Introspective)..............169 23.2 Hooks...173 23.3 Profiles.174 第四篇 C API..177 第24章 C API纵览..........178 24.1 第一个示例程序...179 24.2 堆栈.....181 24.3 C API的错误处理..186 第25章扩展你的程序....188 25.1 表操作.189 25.2 调用Lua函数.........193 25.3 通用的函数调用...195 第26章调用C函数..........198 26.1 C 函数..198 26.2 C 函数库................200 第27章撰写C函数的技巧..................203 27.1 数组操作...............203 27.2 字符串处理...........204 27.3 在C函数中保存状态.................207 第28章 User-Defined Types in C........212 28.1 Userdata.................212 28.2 Metatables..............215 28.3 访问面向对象的数据...............217 28.4 访问数组...............219 28.5 Light Userdata........220 第29章资源管理............222 29.1 目录迭代器...........222 29.2 XML解析...............225

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值