lua学习之语句篇】的更多相关文章

语句 赋值 修改一个变量或者修改 table 中的一个字段的值 多重赋值,lua 先对等号右边的所有元素进行求值,然后再赋值 值的个数小于变量的个数,那么多余的变量就置为 nil 初始化变量,应该为每一个变量赋一个初始值 收集函数的多个返回值 x,y = y,x --变量交换 a[i], a[j] = a[j], a[i] -- 值的个数小于变量的个数 x, y, z = 1, 5 -- z = nil x, y = 1, 5, 8 -- x = 1, y = 5 局部变量与块 local 创建…
下面讲一些lua 常见的用法和规则,可以为学习理解lua带来帮助,最后附上的部分是lua的基本操作,基本包含所有常用语法语句. 1. if判断 lua把 nil 和false 视为"假",其他都为"真" 2. 逻辑运算符 and or lua的and or 可以用来构成三元表达式,如下: > = 1 == 1 and 1 or 2 1 但如果是这样写,就不是你想要的结果了: > = 1 == 1 and false or true true 这是因为,a…
Lua 之Module介绍 包管理库提供了从 Lua 中加载模块的基础库. 只有一个导出函数直接放在全局环境中: [require]. 所有其它的部分都导出在表 package 中. require (modname) 加载一个模块. 这个函数首先查找 [package.loaded] 表, 检测 modname 是否被加载过. 如果被加载过,require 返回 package.loaded[modname] 中保存的值. 否则,它会为模块寻找加载器. require 遵循 [package.…
引言 讲到协程,首先来介绍一下线程和协程的区别 lua协程和多线程 相同之处:拥有自己独立的桟.局部变量和PC计数器,同时又与其他协程共享全局变量和其他大部分东西 不同之处:一个多线程程序可以同时运行几个线程(并发执行.抢占),而协程却需要彼此协作地运行,并非真正的多线程,即一个多协程程序在同一时间只能运行一个协程,并且正在执行的协程只会在其显式地要求挂起(suspend)时,它的执行才会暂停(无抢占.无并发). 注意: Lua中的协程无法在外部将其停止,有可能导致程序阻塞 运行的是主线程时调用…
lua os库提供了简单的跟操作系统有关的功能 1.os.clock() 返回程序所运行使用的时间 local nowTime = os.clock() print("now time is ",nowTime) local s = 0 for i = 1,100000000 do s =s+i end spendTime = os.clock() - nowTime print(string.format("Spend time is : %.2f\n", spe…
表达式 表达式用于表达值 lua 中表达式可以为数字常量,自变字符串,变量,一元和二元操作符,函数调用.函数定义.table 构造式 算数操作符 一元操作符 -负号 二元操作符 -减号 / ^ % x ^ 0.5 x ^ (-1 / 3) -- x 的三次方再求导 10 % 3 = 1 -- 余数计算 x % 1 -- 得到的是 x 的小数部分 x - x % 1 -- 得到的是 x 的整数部分 x - x % 0.01 -- 对几位小数进行取余,就得到几位小数 + 整数 关系操作符 返回得到的…
函数 函数是对语句和表达式进行抽象的主要机制 两种用法 一是可以完成特定的任务,一句函数调用被视为一条语句 二是以只用来计算并返回特定的结果,视为一句表达式 print("Hello, World") a = math.sin(3) + math.cos(10) print(os.date()) 无论哪种用法都需要将所有参数放到一对圆括号中 但如果参数是字面字符串或 table 构造式的话,可以放在括号中,也可以不放 即使在调用函数时没有参数,也必须有一个 () 空括号,如调用 os.…
引言 由于刚接触lua,个人觉得接触一门新语言,就要一定要对基础的部分做一个快速了解. 于是参考网上相关资料吸收并整理下来作为笔记,模糊的时候用来回顾一下. 这些部分基本都是经过自己手动测试梳理过,没有错误的地方. 如果有侵犯的地方还请告知,感谢. 首先从运算符的部分了解认识lua. Lua 有如下几种运算符: .算术运算符 .关系运算符 .逻辑运算符 .其他运算符 算术运算符 操作符 描述 实例 + 加法 A + B 输出结果 30 - 减法 A - B 输出结果 -10 * 乘法 A * B…
讲到元表,先看一段table的合并动作. t1 = {1,2} t2 = {3,4} t3 = t1 + t2 attempt to perform arithmetic on a table value (global 't1') 程序会报错,因为不知道如何对两个table执行+运算,这个时候就需要通过元表来定义,有点类似c中的运算符加载.我们看一下如何通过元表实现合并操作. local mt = {} --定义mt.__add元方法(其实就是元表中一个特殊的索引值)为将两个表的元素合并后返回…
引言 I/O 库提供了两套不同风格的文件处理接口. 第一种风格使用隐式的文件句柄: 它提供设置默认输入文件及默认输出文件的操作, 所有的输入输出操作都针对这些默认文件. 第二种风格使用显式的文件句柄. 当使用隐式文件句柄时, 所有的操作都由表 io 提供. 若使用显式文件句柄, io.open 会返回一个文件句柄,且所有的操作都由该文件句柄的方法来提供. 表 io 中也提供了三个 和 C 中含义相同的预定义文件句柄: io.stdin io.stdout io.stderr. I/O 库永远不会…