Lua基础】的更多相关文章

Lua 5.3 的中文手册, http://cloudwu.github.io/lua53doc 在线浏览 --第一部分 -- 两个横线开始单行的注释 --[[ 加上两个[和]表示 多行的注释. --]] --------------------------------------------------- -- 1. 变量和流控制. ---------------------------------------------------- num = -- 所有的数字都是double. -- 别…
转自: http://blog.csdn.net/wzzfeitian/article/details/8653101 在Lua中,函数是对语句和表达式进行抽象的主要方法.既可以用来处理一些特殊的工作,也可以用来计算一些值.下面有3个例子,分别将函数当作一条语句:当作表达式(后面两个是一类). print(8*9, 9/8)                  --> 72  1.125 a = math.sin(3) + math.cos(10)   --> a = -0.6979515210…
Lua基础之MetaTable(6) 转载地址:http://nova-fusion.com/2011/06/30/lua-metatables-tutorial/ 关于MetaTable的补充:http://www.cnblogs.com/JesseFang/archive/2012/12/27/2836160.html In this tutorial I'll be covering a very important concept in Lua: metatables. Knowledg…
Step By Step(Lua基础知识) 一.基础知识:    1. 第一个程序和函数:    在目前这个学习阶段,运行Lua程序最好的方式就是通过Lua自带的解释器程序,如:    /> lua    > print("Hello World")    Hello World    这样我们就可以以交互性的方式输入lua代码,并立即得到执行结果了.对于代码块较少的测试程序来说,这种方式确实是非常方便的,然而对于相对复杂的程序而言,这种方式就不是很合适了.如果是这样,我们…
参考链接: http://blog.csdn.net/lyh916/article/details/49719697 一.注释 --这是行注释 --[[ 这是块注释 这是块注释 这是块注释 --]] --如果想取消块注释,只需将 --[[ 改为 ---[[ 二.类型与值 --lua有8种基础类型:nil/boolean/number/string/userdata/function/thread/table --即空/布尔/数字/字符串/自定义类型/函数/线程/表 --函数type可根据一个值返…
-- 类型 和 值--[[ 8中类型 滚动类nil.boolean. number.string.userdata.function.thread 和 table.]] print (type("Hello World"))print (type(10.4*3))print (type(print))print (type(print))print (type(true))print (type(nil))print (type(type(x))) --变量没有预定义的类型,每一个变量…
--1.1 Chunks--[[Chunk 是一系列语句,Lua 执行的每一块语句,比如一个文件或者交互模式下的每一行都是一个 Chunk.]] -- 1.2 全局变量--[[ 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil. ]] print (b)b = 10 print (b) -- 如果你想删除一个全局变量,只需要将变量负值为 nilb=nilprint(b) -- 1.3 词法约定 --[[标示符:字母(le…
前言 Lua有6中数据类型,分别是nil(空).boolean(布尔).number(数字).string(字符).table(表).function(函数) 在Lua中可以使用type函数来返回一个值或者变量所属的类型,如: print(type("helle world")) -->output:string print(type(print)) -->output:function print(type(true)) -->output:boolean 1.ni…
局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处理) 这样,可以在chunk内部声明局部函数,该函数仅在chunk内可见,并且词法定界保证了包内其他函数可以调用此函数.  在chunk内部定义多个local function并且相互调用(或定义local递归调用函数)时,最好先声明,再定义. 应该尽可能的使用局部变量(使用关键词local声明的变…
1,计算字符串长度 2,返回字符串s的n个拷贝 3,返回字符串全部字母大写 4,返回字符串全部字母小写 5,返回一个类似printf的格式化字符串 6,根据下标截取字符串 7,在字符串中查找 8,在字符串中替换 9,返回字符的整数形式 10,将整型数字转成字符并连接 原文地址 :http://blog.csdn.net/dingkun520wy/article/details/50434530 字符串函数 lua中字符串索引从前往后是1,2,……,从后往前是-1,-2……. string库中所有…
概括:1.创建协程2.coroutine的函数3.coroutine的基本流程4.yield对coroutine流程的干预5.resume, function()以及yield之间的参数传递和返回值传递 原文地址:http://blog.csdn.net/dingkun520wy/article/details/50212199 1.创建协程 协程和多线程下的线程类似:有自己的堆栈,自己的局部变量,有自己的指令指针,但是和其他协程程序共享全局变量等信息.线程和协程的主要不同在于:多处理器的情况下…
概述:1.定义和调用 2.多返回值3.可变参数 原文地址 http://blog.csdn.net/dingkun520wy/article/details/50275387 1.定义和调用 函数,在Lua中,函数的定义也很简单.典型的定义如下: function add(a,b) -- add 是函数名字,a和b是参数名字 return a+b -- return 用来返回函数的运行结果 end add(10,10) 函数调用的实参与形参数目可以不致,当传人少时补nil,当多时舍弃 2.多返回…
概要:1.table特性:2.table的构造:3.table常用函数:4.table遍历:5.table面向对象 原文地址:http://blog.csdn.net/dingkun520wy/article/details/50231603 1.table特性 table是一个“关联数组”,数组的索引可以是数字或者是字符串,所有索引值都需要用 "["和"]" 括起来:如果是字符串,还可以去掉引号和中括号: 即如果没有[]括起,则认为是字符串索引 table 的默认…
目录:1.输出2.注释3.控制语句4.赋值语句5.运算符6.关键字7.变量类型8.其他 原文地址http://blog.csdn.net/dingkun520wy/article/details/49930543 1.输出 print("Hello world") 2.注释 单行注释中,连续两个减号"--"表示注释 多行注释中,由"--[["表示注释开始,并且一直延续到"]]"为止 3.控制语句 (If) if 条件 then…
Hello World 交互式编程 Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用: [huey@huey-K42JE lua]$ lua Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio > print("hello world") hello world 脚本式编程 我们可以将 Lua 程序代码保持到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程,如我们将如下代码存储在名为 hello.lua…
通过函数闭包的方式来实现面向对象 -- 通过函数闭包的方式来实现面向对象 function People(name) local self = {} local function init() self.name = name end self.sayHi = function() print("Hello"..self.name) end init() return self end --local p = People("XiaoLi") --p:sayHi()…
1.1 全局变量 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil. 如果你想删除一个全局变量,只需要将变量负值为 nil 这样变量 b 就好像从没被使用过一样.换句话说, 当且仅当一个变量不等于 nil 时, 这个变量存在. 1.2 词法约定 标示符:字母(letter)或者下划线开头的字母.下划线.数字序列.最好不要使用下划 线加大写字母的标示符,因为 Lua 的保留字也是这样的.Lua 中,letter 的含义是依…
局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处理) 这样,可以在chunk内部声明局部函数,该函数仅在chunk内可见,并且词法定界保证了包内其他函数可以调用此函数.  在chunk内部定义多个local function并且相互调用(或定义local递归调用函数)时,最好先声明,再定义. 应该尽可能的使用局部变量(使用关键词local声明的变…
标签(空格分隔): Lua 1. Lua可以一次性给多个变量赋值 变量比赋值多,多的变量就赋值nil 变量比赋值少,多的赋值舍弃 local a, b, c = 1, 2, 3 print( a, b, c) local a, b, c = 1, 2 print(a, b, c) local a, b, c = 1, 2, 3, 4 print(a, b, c) 输出: 1 2 3 1 2 nil 1 2 3 2. lua代码块 do ... end 3.lua控制语句 3.1 条件判断 if…
1.Lua中有8个基本类型分别为:nil.boolean.number.string.userdata.function.thread和table 2.Lua中的表达式包括数字常量.字符串常量.变量.一元和二元运算符.函数调用.还可以是非传统的函数定义和表构造 *表的构造: 构造器是创建和初始化表的表达式.表是Lua特有的功能强大的东西.最简单的构造函数是{},用来创建一个空表.可以直接初始化数组: days = {"Sunday", "Monday", "…
-- local 局部-- local表=全局表,是同一个表,这主要是由于lua的表机制是匿名的,相当于函数的指针,local foo = foo,-- 即使本地foo没有在全局_G注册,还是引用的是同一个表.当没有变量指向表的时候,垃圾回收器会销毁这个匿名表.-- 而local变量则是创建一个新的变量,遵守子作用域覆盖父作用域的规则.local c={} function c:test() self._m="xxxx" end -- 1:冒号定义或调用方法,自带self参数,多余参数…
Lua垃圾收集策略 Lua自动进行内存的管理.程序只能创建对象,而没有执行删除对象的函数.通过使用垃圾收集技术,Lua会自动删除那些失效的对象,也就是引用为0 的对象.但是呢?有些对象,引用没有指向它,就没办法引用到他,就相当于没法回收的垃圾内存. 一个典型的例子就是堆栈:有一个数组和指向栈顶的索引构成.认为数组中有效的只是在顶端的那一部分,但Lua不那么认为.如果你通过简单的出栈操作提取一个数组元素,那么数组对象的其他部分对Lua来说仍然是有效的.同样的,任何在全局变量中声明的对象,都不是Lu…
Lua 是什么? Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy.Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发. 设计目的 其设计目的是…
lua 数组下标从 1 开始, 不是 0 lua 逻辑运算符  与 或 非  就是英文  and  or  not local  局部变量 数据类型:lua是一门动态类型语言,变量没有类型,只有值才有类型.语言中无类型定义,所有的值携带自己的类型.lua有8种数据类型:1:nil :值为nil.表示一个无效值.2:boolean :两个值 true false.(false nil 为假,其余都是真,连0也是真)3:number :双精度浮点实数 doubule.4:string :字符串由一对…
官方的文档说: 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址 在Lua中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素. 迭代器的种类主要有:泛型for迭代器.无状态的迭代器.多状态的迭代器 下面看几个例子: ipairs.lua name = {"YYX","HJZ"}; --以下称为泛型for迭代器 --其中key表示索引值,从1开始计算 --value表示数组中的元素 -…
Lua语言中,数组和C还是有区别的,Lua的数组下标从1开始计数,而C语言的数组下标从0开始计数,我想这可能是设计Lua的人想要符合人的思维习惯而去这么设计的. 数组,也就是按相同类型,在内存中顺序排列的一个组合,这点跟C基本没多大的差别. 接下来看1个例子: test7.lua --一维数组,数组的成员是字符串 array = {"Lua","Study"}; for i = 1 , 2 do print(array[i]); end --一维数组,数组的成员是整…
众所周知,C,C++,python等语言都有运算符,那么Lua也不例外,因为它是C写的嘛! Lua分为主要三类运算符,分别是算术运算符,关系运算符,逻辑运算符,还有特殊运算符. 1.算术运算符有: + (加)   -(减)   *(乘)  /(除)   %(取模)   ^(求幂)   -(符号) 来看一个例子:test6.lua num1 = 4 ; num2 = 2 ; print(num1+num2); print(num1-num2); print(num1*num2); print(nu…
Lua的函数功能很强大,保留了C语言的一些基本的特性,但是也有C语言没有的特性,比如,lua可以在一个函数返回多个值,我们来看看下面这个案例: 解释运行: lua test5.lua --定义一个函数,传入两个数,比较大小 --函数名为:compare_max_or_min --返回值为:第一个为max,第二个为min --当然,在function关键字前面可以加local,声明为局部函数,不加local默认为 --全局函数 function compare_max_or_min(max , m…
Lua提供了if语句和if else语句作为流程控制语句,当然,符合C的特点,流程语句之间可以实现嵌套操作,当然流程控制也可以和循环体结合进行控制. 1.if语句 if(布尔表达式) then --[ 在布尔表达式为 true 时执行的语句 --] end 案例:test3.lua 2 i = 0 ; --定义一个变量i,并初始化为0 3 if i < 5 --如果i 小于 5 4 then 5 while(true) --此时做循环加1 6 do 7 i = i+1 ; 8 print("…
Lua的循环和C语言的循环的语法其实差不多,所以,理解起来就很好理解的啦,所以实现也很简单,跟C没什么两样,都差不多. 案例如下: test1.lua -- 1.while循环 --[[ 理解为C语言的就行了,其实差不多的 语法格式: while(true) do 执行语句 end ]] --定义一个全局变量a=0 a=0 -- while(true) do a=a+1 print("a:",a) if(a == 5) then break end end -- 2.for循环 --[…