热更新lua语法

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

--输入输出
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()




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值