lua php 触摸精灵,lua程序设计主要学习路径
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
基础:
掌握红色部分,了解蓝色部分
进价:
掌握:红色部分,掌握蓝色部分
掌握: 品红字部分;了解青色部分
1.2 全局变量
全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil.
print(b) --> nil
b = 10
print(b) --> 10
如果你想删除一个全局变量,只需要将变量负值为nil
b = nil
print(b) --> nil
这样变量b就好像从没被使用过一样.换句话说, 当且仅当一个变量不等于nil时,这个变量存在。
1.3 词法约定
标示符:字母(letter)或者下划线开头的字母、下划线、数字序列.最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。Lua中,letter的含义是依赖于本地环境的。
保留字:以下字符为Lua的保留字,不能当作标识符。
and break do else elseif
end false for function if
in local nil not or
repeat return then true until
while
注意:Lua是大小写敏感的.
注释:单行注释:--
多行注释:--[[ --]]
--[[
print(10) -- no action (comment)
--]]
第2章 类型和值
Lua是动态类型语言,变量不要类型定义。Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread和table。函数type可以测试给定变量或者值的类型。
print(type("Hello world")) --> string
print(type(10.4*3)) --> number
print(type(print)) --> function
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil
print(type(type(X))) --> string
变量没有预定义的类型,每一个变量都可能包含任一种类型的值。
print(type(a)) --> nil ('a' is not initialized)
a = 10
print(type(a)) --> number
a = "a string!!"
print(type(a)) --> string
a = print -- yes, this is valid!
a(type(a)) --> function
注意上面最后两行,我们可以使用function像使用其他值一样使用(更多的介绍参考第六章)。一般情况下同一变量代表不同类型的值会造成混乱,最好不要用,但是特殊情况下可以带来便利,比如nil。
2.1 Nil
Lua中特殊的类型,他只有一个值:nil;一个全局变量没有被赋值以前默认值为nil;给全局变量负nil可以删除该变量。
2.2 Booleans
两个取值false和true。但要注意Lua中所有的值都可以作为条件。在控制结构的条件中除了false和nil为假,其他值都为真。所以Lua认为0和空串都是真。
2.4 Strings
指字符的序列。lua是8位字节,所以字符串可以包含任何数值字符,包括嵌入的0。这意味着你可以存储任意的二进制数据在一个字符串里。Lua中字符串是不可以修改的,你可以创建一个新的变量存放你要的字符串,如下:
a = "one string"
b = string.gsub(a, "one", "another") -- change string parts
print(a) --> one string
print(b) --> another string
string和其他对象一样,Lua自动进行内存分配和释放,一个string可以只包含一个字母也可以包含一本书,Lua可以高效的处理长字符串,1M的string在Lua中是很常见的。可以使用单引号或者双引号表示字符串
a = "a line"
b = 'another line'
为了风格统一,最好使用一种,除非两种引号嵌套情况。对于字符串中含有引号的情况还可以使用转义符\来表示。Lua中的转义序列有:
\a bell
\b back space -- 后退
\f form feed -- 换页
\n newline -- 换行
\r carriage return -- 回车
\t horizontal tab -- 制表
\v vertical tab
\\ backslash -- "\"
\" double quote -- 双引号
\' single quote -- 单引号
\[ left square bracket -- 左中括号
\] right square bracket -- 右中括号
例子:
> print("one line\nnext line\n\"in quotes\", 'in quotes'")
one line
next line
"in quotes", 'in quotes'
> print('a backslash inside quotes: \'\\\'')
a backslash inside quotes: '\'
> print("a simpler way: '\\'")
a simpler way: '\'
还可以在字符串中使用\ddd(ddd为三位十进制数字)方式表示字母。
"alo\n123\""和'\97lo\10\04923"'是相同的。
还可以使用[[...]]表示字符串。这种形式的字符串可以包含多行也,可以嵌套且不会解释转义序列,如果第一个字符是换行符会被自动忽略掉。这种形式的字符串用来包含一段代码是非常方便的。
page = [[
An HTML Page
Lua
[[a text between double brackets]]
]]
io.write(page)
运行时,Lua会自动在string和numbers之间自动进行类型转换,当一个字符串使用算术操作符时,string就会被转成数字。
print("10" + 1) --> 11
print("10 + 1") --> 10 + 1
print("-5.3e - 10" * "2") --> -1.06e-09
print("hello" + 1) -- ERROR (cannot convert "hello")
反过来,当Lua期望一个string而碰到数字时,会将数字转成string。
print(10 .. 20) --> 1020
..在Lua中是字符串连接符,当在一个数字后面写..时,必须加上空格以防止被解释错。
尽管字符串和数字可以自动转换,但两者是不同的,像10 == "10"这样的比较永远都是错的。如果需要显式将string转成数字可以使用函数tonumber(),如果string不是正确的数字该函数将返回nil。
line = io.read() -- read a line
n = tonumber(line) -- try to convert it to a number
if n == nil then
error(line .. " is not a valid number")
else
print(n*2)
end
反之,可以调用tostring()将数字转成字符串,这种转换一直有效:
print(tostring(10) == "10") --> true
print(10 .. "" == "10") --> true
3.2 关系运算符
< > <= >= == ~=
这些操作符返回结果为false或者true;==和~=比较两个值,如果两个值类型不同,Lua认为两者不同;nil只和自己相等。Lua通过引用比较tables、userdata、functions。也就是说当且仅当两者表示同一个对象时相等。
a = {}; a.x = 1; a.y = 0
b = {}; b.x = 1; b.y = 0
c = a
a==c but a~=b
Lua比较数字按传统的数字大小进行,比较字符串按字母的顺序进行,但是字母顺序依赖于本地环境。
当比较不同类型的值的时候要特别注意:
"0" == 0 -- false
2 < 15 -- true
"2" < "15" -- false (alphabetical order!)
为了避免不一致的结果,混合比较数字和字符串,Lua会报错,比如:2 < "15"
3.3 逻辑运算符
and or not
逻辑运算符认为false和nil是假(false),其他为真,0也是true.
and和or的运算结果不是true和false,而是和它的两个操作数相关。
a and b -- 如果a为false,则返回a,否则返回b
a or b -- 如果a为true,则返回a,否则返回b
例如:
print(4 and 5) --> 5
print(nil and 13) --> nil
print(false and 13) --> false
print(4 or 5) --> 4
print(false or 5) --> 5
一个很实用的技巧:如果x为false或者nil则给x赋初始值v
x = x or v
等价于
if not x then
x = v
end
and的优先级比or高。
C语言中的三元运算符
a ? b : c
在Lua中可以这样实现:
(a and b) or c
not的结果只返回false或者true
print(not nil) --> true
print(not false) --> true
print(not 0) --> false
print(not not nil) --> false
3.4 连接运算符
.. --两个点
字符串连接,如果操作数为数字,Lua将数字转成字符串。
print("Hello " .. "World") --> Hello World
print(0 .. 1) --> 01
3.5 优先级
从高到低的顺序:
^
not - (unary)
* /
+ -
..
< > <= >= ~= ==
and
or
除了^和..外所有的二元运算符都是左连接的。
a+i < b/2+1 (a+i) < ((b/2)+1)
5+x^2*8 5+((x^2)*8)
a < y and y <= z (a < y) and (y <= z)
-x^2 -(x^2)
x^y^z x^(y^z)
lua php 触摸精灵,lua程序设计主要学习路径相关推荐
- python实现触摸精灵功能_触摸精灵lua脚本实现微信群自动加好友功能~值得一看...
原创 公众号|花花爱软件 --此脚本针对iPhone5/5s --目前只实现一个屏幕微信群好友的添加,如果想添加更多好友, --需要划屏操作,执行划屏操作时建议循环滑动 function main() ...
- ios平台触动精灵lua调用C语言
随着移动设备的兴起,Lua 作为嵌入式脚本语言,由于其自身的特点及优势,在应用领域使用度越来越高.触动精灵是一个手机游戏辅助平台,可以在上面开发自动化游戏的脚本,编程语言为lua.调用C语言对lua进 ...
- lua transliterate实现(lua程序设计10.6练习10.3题)
lua transliterate实现(lua程序设计10.6练习10.3题) local function transliterate(s,t)return (string.gsub(s," ...
- lua split实现(lua程序设计10.6练习10.1题)
lua split实现(lua程序设计10.6练习10.1题) local function split(s,sp)local t = {}local last = 1local irepeati = ...
- lua实现继承(lua程序设计21.7 练习21.2题)
lua实现继承(lua程序设计21.7 练习21.2题) StackQueue = Stack:new() function StackQueue:insertBottom(v)table.inser ...
- lua实现stack(lua程序设计21.7 练习21.1题)
lua实现stack(lua程序设计21.7 练习21.1题) Stack = {} function Stack:new(o)o = o or {}self.__index = selfsetmet ...
- lua学习01:c调用lua、lua调用c、lua的协程、lua的常见API、lua读取配置文件总结
文章目录 1.c通过虚拟机和虚拟栈调用lua test-vm.c test-vm.lua 打印效果 2.lua通过虚拟机和虚拟栈调用c lua-tbl.c test-tbl.lua 3.lua的协程 ...
- lua脚本之lua语言简介以及lua的安装
本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解. 一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设 ...
- lua怎么嵌入php,Lua教程(一):在C++中嵌入Lua脚本
本系列教程主要介绍如何在C/C++程序里面嵌入Lua脚本,我打算从以下几个方面来介绍: 1.如何在C/C++里面嵌入Lua脚本 2.Lua访问C/C++数据结构(这里面要介绍类,结构体,函数,变量,枚 ...
最新文章
- 私有5g网络_欧洲通过FUDGE5G的启动来支持工业4.0的云原生私有5G
- python读取excel画散点图-python学习之matplotlib绘制散点图实例
- 检索数据_18_按照多个字段排序查询结果
- 数据结构与算法之递归系列
- 2011.10.16
- java中的泛型(一)
- 百度图神经网络学习——day05:图神经网络进阶模型
- Flink1.6系列之—数据流编程模型
- DEDECMS之二 如何修改模板页
- 2019年“深圳杯”数学建模挑战赛B题解题思路(一)
- 如何将socket服务器部署到云服务器上
- python 什么意思_Python中冒号等于(:=)是什么意思?
- wampserver下载以及安装教程
- matlab rawdat,工控网络安全态势感知算法实现.pdf
- HDU:2026 首字母变大写
- java ftp文件大小_java如何获得ftp服务器上指定文件的大小
- 【优化求解】基于灰狼算法GWO求解最优目标matlab代码
- 手机客户端使用ConnectBot软件远程登录服务器
- Mac idea java 代码的前进后退 代码的撤销和前进快捷键
- experience(1):一个博士的经历(小木虫精华帖)
热门文章
- C# 中对象与JSON字符串相互转换的三种方法
- c#中将WM_CLOSE消息发送到没有窗口的进程的方法
- mysql 8.0.19 winx64安装及修改初始密码
- spring 点击保存按钮页面禁用_用一篇深度好文,详解按钮的设计
- 开关电源仿真与设计基于spice 第2版 中译本_新书推荐 开关电源控制环路设计Christophe Basso 著...
- Android开发面试题Service之startService和bindService之间的区别
- Android开发之依赖库混淆与外层APP混淆开启的关系
- C语言编程猜谜语,简单的谜语大全及答案
- linux 设置gbk编码格式,设置ubuntu支持gbk编码格式和设置eclipse 编码格式
- matlab第三方控件,第三方控件介绍