Lua语言简介
简介Lua是一门小巧的脚本语言,由巴西里约热内卢天主教大学的Roberto Ierusalimschy等人于1993年开发,在现代企业开发中Lua通常被作为胶水语言,在游戏领域应用尤为频繁。
Lua中的数据类型Lua中定义以下几种数据类型
1、Nilnil是一个特殊的数据类型,它只有一个值,就是nil,他的作用就是为了区别其他的值
2、Boolean和其他语言一样,布尔值只用true和false两个值
3、Number用来表示实数的类型,包含整数和浮点数,Lua中number类型可以表示32位整数
4、Stringstring类型用来表示一个字符串,Lua中的字符串是不可变类型,此外Lua也存在数字和字符串之间的隐式转换12('10'+1)
5、tabletable类型实现了一种特殊的数组,特殊之处在于该数字的索引方式,传统的数组索引是通过数组下标来实现的,二table不仅能以整数来索引,还可以使用字符串和其他类型的值进行索引。table没有固定的大小,可以在里面放入任意数量的元素,下面的例子简单展示了table的用法
123456a = {} //声明一个tabl ...
Evaluate Reverse Polish Notation
题目描述Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, /. Each operand may be an integer or another expression.
Some examples:12["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
代码后缀表达式,即逆波兰式计算规则为:从左到右遍历表达式的每个数字和符号,遇到数字就进栈,遇到符号,就将处于栈顶两个数字出栈,进行运算,运算结果进栈,一直到最终获得结果。
这里没有考虑不合法的表达式,代码如下:
123456789101112131415161 ...
Lua 笔记
词法约定变量是以字母或下划线开头的字母下划线数字序列,不要使用下划线加大写字母的标识符,因为Lua的保留字是这种形式Lua的保留字:
and
break
do
else
elseif
end
false
for
function
if
in
local
nil
not
or
repeat
return
then
true
until
while
在Lua中大小写敏感,如and是保留字,And和AND则不是保留字
代码规范Lua 的多条语句之间并不要求任何分隔符, 如 C 语言的分号(;), 其中换行符也同样不能起到语句分隔的作用
Lua的注释有两种:单行注释,使用两个减号(–)开头就行了1--单行注释
多行注释,两个减号(–)后面紧跟两个正中括弧([[),后面就是注释语句,结束时减减(–)紧跟两个反中括弧(]])12345--[[我是跨行注释语句--]]
变量Lua中分全局变量和局部变量。默认创建的就是全局变量,访问一个没有初始化的全局变量是不会出错的,只不过结果是 nil ,这就相当于 null,想要删除一个全局变量时,将其赋值为nil就行了。局部变量 ...
lua
|
分类
<a href="/categories/#lua之基础" title="lua之基础">lua之基础</a>
|
“翻译”自https://github.com/SteveKChiu/lua-intf
lua-intf 提供了C++11 与Lua 语言之间的一种绑定机制,它提供了三种不同的API(本文只会讲到LuaBinding 与LuaRef)
LuaBinding:导出C++ 类、函数给Lua 脚本使用
LuaRef:用于访问Lua Object 的高级别API
LuaState:为Lua C API 提供的低级别包装器
除了C++11、Lua 之外,lua-intf 没有其他需要依赖的。而且它是一个只有头文件的库,也就是说没有makefile 或者其他安装操作,直接拷贝lua-intf 源码到你的项目中,在代码中#include LuaIntf.h 即可
Lua 和C++ 的错误处理
使用LuaIntf,最好使用C++ 编译器编译Lua,这样允许L ...
使用元表优化 Lua 配置文件
配置文件
在游戏工程中,通常有大量配置是由策划提供,再转换成程序方便读取的格式添加到工程中。
在我参与的Cocos2dx-Lua工程中,策划通常在Excel中配置,再通过脚本转换为Lua-Table的文件。
比如常见的道具表转换后:
-- PropModel.lua
PropModel = {
[1001] = {
ID = 1001,
name = "道具1001",
desc = "道具1001描述",
colorLv = 1, -- 颜色等级
ifSell = true, -- 是否可以出售
ifUse = true, -- 是否可以使用
useExtraStr = "", -- 使用时额外消耗的资源
useNeedNum = 1, -- 使用消耗数量
maxNum ...
cocos2dx lua —— Http请求总结与实战(封装)
今天的主题是关于cocos2dx lua实现短链接网络请求,使用Http实现基本的服务器网络数据获取,关于长链接(socket后续文件或者遇到需要的时候回特别实现与处理)
关于Http这里就不多做介绍了,不过,作为一个程序员,网络请求是开发中最多也是最重要的一环节,这里比较建议,搞懂http的整个请求流程!
推荐:一次完整的HTTP请求过程
在有了基本的Lua知识和cocos2dx lua基本的了解和学习之后,我有了一个初步的cocos2dx lua开发常识,然后就开始在上面实现基本的界面,并根据界面操作请求和响应数据!
入口场景在main中初始化场景中必要的UI.
创建一个背景图片和一个按钮,实现点击按钮跳转到另外一个场景,进行网络请求和数据获取
--- @class MainScene
local MainScene = class("MainScene",cc.load("mvc").ViewBase)
—onEnter
function MainScene:onEnter()
print("onEnter")
end
— ...
开个坑学习一下lua
再次好久没有更新blog,主要是感觉没有什么记录的东西。最近通读了云风大神的blog,只能感叹人与人差距之大,有时确实难以企及,但仍希望能有一丝靠近。
在工作中对lua有一些接触,开个坑mark一下,准备用一段时间通读一下lua的代码,大概20k行左右,对于一门语言来说确实足够精简。
2016.05.18
C循环执行Lua
文章目录
</div>
<h3 id="实现过程"><a href="#实现过程" class="headerlink" title="实现过程"></a>实现过程</h3><p>先定义好树莓派相关操作函数</p>
在创建Lua状态机时注册函数
main函数启动后,先执行初始化函数
初始化函数中,获取当前程序目录,并设置相关目录路径(初始化目录和工作目录)
然后扫描初始化目录,依次执行里面的Lua文件,根据执行结果选择是否跳过
初始化完成后,执行循环工作处理,每次循环都扫描工作目录,依次执行里面的Lua文件,根据执行结果选择是否跳出循环
使用运行程序后,只要往 /lua/work/ 目录中放 Lua 文件就可以了
代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h> ...
Lua学习笔记:对函数的深入理解
闭包
lua中的函数都可以认为是闭包,只不过为了便于理解还是用了函数的概念。
lua中函数的返回值可以是匿名函数,也就是闭包。以下面的代码为例,提出一个概念:非局部的变量。在下面的代码中,匿名函数访问了一个变量i,它对于newCount来说是局部变量,对于匿名函数来说是既不是局部变量也不是全局变量,在lua中这个称谓非局部的变量。
在lua中一个闭包指的是一个函数和该函数所需要访问的非局部的变量。lua会把它们看做是一个整体,因此在下面的代码中多次允许c1和c2,会发现变量i是在递增的。这是因为c1 = newCount()这句代码相当于给c1赋值了一个闭包,它包含了i这个变量。因此多次执行相当于就是在反复执行一个对象,这样i就一直是原来那个i。
1234567891011121314151617181920212223function () local i =0 return function () i=i+1 print(i) endendc1 = newCount()print(c1())print(c1())c2 = newCount()print(c2())p ...
每周一个Github项目【第二期】govaluate · Zablog
golang环境下任意表达式的求值 // Arbitrary expression evaluation for golang
名称
govaluate
地址
Github
作者
Knetic等
brief intro
Arbitrary expression evaluation for golang
简要介绍
golang环境下任意表达式的求值
LICENSE
MIT
Stars
245
govaluate提供了任意类似C语言的算术/字符串表达式的求值。
为什么你不应该直接在代码中书写表达式有些时候,你并没有办法提前得知表达式的样子,或者你希望表达式可设置。如果你有一堆运行在你的应用上的数据,或者你想要允许你的用户自定义一些内容,或者你写的是一个监控框架,可以获得很多metrics信息,然后进行一些公式计算,那么这个库就会非常有用。
如何使用可以创建一个新的EvaluableExpression,然后调用它的”Evaluate”方法。
123 expression, err := govaluate.NewEvaluableExpress ...