热更新lua语法

原创 2015年11月18日 22:28:47

输入输出     注意:不需要分号

--输入输出
print(1)     --相当于WriteLine,自带回车
io.write(2)   --不换行的输出

print("请输入一个值")     //测试请在控制台执行   lua ***路径
a=io.read()
print(a)

变量

num=100               a,b,c=1,2,3,4      可同时赋值多个变量

变量不赋值,默认为nil

num为全局变量,默认定义的变量都是全局,定义局部变量需要在前面加一个local

在代码块中声明得局部变量,当代码快运行结束的时候,这个变量就会被释放

在Lua中定义变量是没有类型的,根据存储什么数据,来决定是什么类型

变量得命名不能以数字开头

尽量避免下划线加大写字母开头,这种格式Lua自身保留

变量转换

a=10
b="10"
a=tonumber(b)
b=tostring(a)

单行注释  

--注释内容        多选  ctrl+/

多行注释

--[[ 这里是注释内容]]--

Lua中基本数据类型

1.nil表示空数据,等同于null

2.boolean布尔类型,存储true和false

3.string字符串类型,字符串可以使用双引号也可以使用单引号表示

4.number小数类型(Lua中没有整数类型)

5.table表类型

myTable={34,,34,2,342,4}

myTable[3]

Lua中的运算符

1.算术运算符 +  -  *  /    (Lua中没++    --这样的运算符)

2.关系运算符 <=  <  >  >=  ==

3.逻辑运算符  and or not   分别表示  与  或  非  

--and返回假值  当都为假返回前者  当都为真返回后者

print(4 and 5)
print(4 and nil)

print(nil or false)
--or返回真值    都为真返回前者   都为假返回后者

print(4 or 5)
print(4 or nil)

print(nil or false)

if语句的三种用法

1.if [condition]  then

end                            

if 5>3 then
print("yes")
end

2.if [condition]  then

else

end

if 5<3 then
print("yes")
else
print("no")
end

3. if [condition]  then

elseif [condition]

else

end  

if 5<3 then
print("yes")
elseif 10>9   then
print("no")
else
print("default")
end

whie语法结构

while [condition]  do

[code to execute]

end

Do..While语法结构

repeat

[code to execute]

until    [codition]


i=0
repeat 
print(i)
i=i+1
until
i>=10

for循环结构(可以用break终止循环  没有continue语法)

for index=[start],[end],[add] do      --add为增量

[code to excute]

end


for i=1,10,2 do
print(i)
end

函数    --函数参数可以传递任意个,不受限制,可以同时返回多个值

function [function name](param1,param2)

[function code]

end

例子:求两个数的和

function Plus(num,num2)

return num1+num2

end

//可传递多个值,不受限制

add1=function ( a,b )
return a+b
end
print(add1(1,3,4))

//可同时返回多个值   代替了c#中out参数

func = function ( )
return 1,2,3,4
end
a,b,c,d=func()
print(d)


标准库

数学运算函数

math.abs     --绝对值

math.cos     --余弦

math.max   -- 最大值

math.maxinteger

math.min   --最小值

math.random  -- 随机数

math.sin     -- 正弦

math.sqrt   --开方

math.tan   --正切

字符串处理相关函数

string.byte

string.char

string.find

string.format

string.lower

string.sub

string.upper

..字符串相加

tostring()  把数字转化成字符串

tonumber() 把一个字符串转化成数字

Table表

在lua中的table类似C#中的字典,其实就是一个key-value键值对的数据结构

1.table的创建

myTable={}

表明后面使用{}赋值,表示一个空的表

2.table的赋值

myTable[3]=34   当键是一个数字的时候的赋值方式

myTable["name"]="wang"  当键是一个字符串的赋值方式

myTable.name="wang"   当键是一个字符串的赋值方式

3.table的访问

myTable[3]  当键是数字的时候,只有这一种访问方式

myTable.name    当键是字符串的时候有两种访问方式

myTable["name"]

4.table的第二种创建方式

myTable={name="wang",age=18,isMan=false}

(表创建之后依然可以添加数据)

数据访问

myTable.name

myTable["name"]

5.table的第三种方式(类似数组的使用)

myTable={34,34,34,3,4,"asdasd"}

当没有键的时候,编译器会默认给每一个值,添加一个数字的键,该键从1开始

--表实际上就是键值对数组,键值可以为任意类型

--表里没写键的变量,默认从1开始

--表里的成员可读可写,可嵌入表(别忘了逗号)

表的遍历

表的遍历分两种

1.如果是只有数字键,并且是连续的可以使用下面的遍历

for index=1,table.getn(myTable) do

[code to execute]

end

2.所有的表都可以通过下面的方式遍历

for index,value in pairs(myNames) do

print(index,value)

end

myTable={33,44,55,"hha"}
for index,value in pairs(myTable) do
print(index,value)
end

表的相关函数

1.table.concat    把表中所有数据连成一个字符串

2.table.insert     向指定位置插入一个数据

3.table.move     移动数据

4.table.pack    包装成一个表

5.table.remove    移除指定位置的数据

6.table.sort      排序

7.table.unpack   返回一个数组,指定范围的数组

通过表来实现面向对象

myTable={}   申请对象

local this=myTable   myTable声明this关键字代表当前对象

--定义并声明对象的属性

myTable.name="wang"

myTable.age=110

--定义并声明对象中的方法

myTable.function=function()

[code to execute]

end

function myTable.function()

[code to execute]

end

代码实例

xiaoyu = {
  age,
  --self可以替代this
  grow = function(self)
  self.age = self.age + 1
  end
 }
 xiaoyu.age = 18
 --模拟面向对象,传参的第一种方式
 xiaoyu.grow(xiaoyu)
 --第二种,冒号,哪个表调用,self被赋值为哪个表
 xiaoyu:grow()
 print(xiaoyu.age)

表继承

第一种方法:

Person={
age,
height,
eat=function(food)
print("eat"..food)
end
}
xiaoyu={
huazhuang=function()
print("huazhuang")
end
}
-- 表继承
setmetatable(xiaoyu,{__index=Person})
xiaoyu.age=18
print(xiaoyu.age)
xiaoyu.eat("shit")

第二种方法:

Person={
age,
height,
eat=function(food)
print("eat"..food)
end,
new = function(self)
obj = {}
setmetatable(obj,{__index=self})
return obj
end
}
--创建一个对象继承Person
xiaoyu=Person:new()
xiaoyu.eat(" apple")
--创建一个对象继承Person   并添加新方法
LSL=Person:new()
LSL.lu=function()
print("nihao")
end
LSL.lu()




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

1、在C#与Lua相互调用

一、利用LuaInterface调用lua代码 1、下载luainterface,这里用的luainterface-1.5.3版本。 2、添加 LuaInterface.dll的引用。 ...

lua中调用C#

1.将luanet.dll文件拷贝进工程目录下bin/Debug文件夹下 2.编写lua文件(编码格式应为ANSI) require "luanet" --加载C#命名空间 luanet.lo...

c#调用脚本语言Lua——简单Demo

c#调用脚本语言Lua——简单Demo 配置: 1. 下载c#下的Lua支持类库。下载地址:http://files.luaforge.net/releases/luainterface/luaint...

C#中调用lua

首先引入LuaInterface.dll库文件  //创建Lua的解释器             Lua lua = new Lua();             //定...

OSGI技术点滴

1. 运行时内存溢出-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dorg.osgi.service.http.port=80  -XX:PermS...

Lua游戏脚本热更新机制

Lua游戏脚本热更新机制 ¶ 设计要点¶ 能够在服务器运行期间更新程序逻辑代码以实现修正程序Bug、修改游戏数据的目的。游戏框架代码的热更新暂不考虑。例如: 某个业务处理函数逻辑有Bug,服务...

Android热更新实现原理

原文出处:http://blog.csdn.net/lzyzsd/article/details/49843581  最近Android社区的氛围很不错嘛,连续放出一系列的Android动态加载...

Cocos2dx Lua 热更新

在我没接触热更新之前,我对热更新是一脸懵逼。后来看了些资料,自己动手试验了下,基本上了解了它的过程。 所谓的热更新,就是在线更新代码和资源。 热更新的过程 首先,客户端向服务器发送请...

lua - 热更新模块

最近准备在手机项目客户端中使用lua, 以前一直在服务器使用luabind. 另外, tolua++也体验过, LuaPlus也在早年用过. 以下是本人对这些绑定库的个人感觉:luabind 利用b...

lua游戏服务器热更新

Lua热更新实现 用途 在生产环境上,总有可能出现不可预知的Bug,而通常修改好Bug仅仅又修改几句,停机维护的成本又太高,对于游戏来说,通常每个服就是单独的进程,也做不到像分布式环境下,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)