首页 > 其他分享 >[Lua]lua初识

[Lua]lua初识

时间:2023-05-08 16:36:54浏览次数:36  
标签:function 10 end .. lua -- Lua 初识 print




-- mac 上有很多文本编辑器,Himi找了很多,感觉TextMate是比较好用的,小巧且功能强大!而且免费,图标是个小菊花 - -

-- 注释语句

 


--[[ 

注释段落语句

  ]]--

 


--引用其他lua文件,不需要加上(.lua)后缀

--require "xx"

 


--变量不需要定义,可以直接赋值

count =100--成员变量

localcount =100--局部变量

 


--方法定义

function hello(...)

    --打印

    print("Hello Lua!");

    print(string.format(...))

end

 


-- 每一行代码不需要使用分隔符,当然也可以加上

-- 访问没有初始化的变量,lua默认返回nil

 


-- 调用函数形式

hello("你懂的")

 


--打印变量的类型

isOK =false

print(type(isOK))

 


-- 基本变量类型

a =nil --Lua 中值为nil 相当于删除

b =10

c =10.4

d =false

--定义字符串,单引号,双引号都可以的

e ="i am"

d ='himi'

 


--两个字符串的连接可以如下形式

stringA ="Hi"

stringB ="mi"

print(stringA..stringB)

 


--另外Lua也支持转移字符,如下

print(stringA.."\n"..stringB);

 


--修改字符串的部分gsub,可以如下形式:(将stringA字符串中的Hi修改为WT)

stringA=string.gsub(stringA,"Hi","WT")

print(stringA);

 


--将字符换成数字tonumber(不转也会自动转)

--将数字换成字符tostring(不转也会自动转)

stringC ="100"

stringC =tonumber(stringC)

stringC =stringC +20

stringC =tostring(stringC)

print(stringC)

 


--取一个字符串的长度使用 #

print(#stringC)

 


--创建 表

tableA ={}

m ="x"

tableA[m] =100

m2='y'

tableA[m2] =200

print(tableA["x"].."\n"..tableA.y)

--另外表还可以如下形式(从1开始)

tableB ={"4","5","6","7","8"}

print(tableB[1])

 


--算术操作符

c1=10+2

c2=10-2

c3=10*2

c4=10/2

c5=10^2

c6=10%2

c7=-10+2

print(c1.."_"..c2.."_"..c3.."_"..c4.."_"..c5.."_"..c6.."_"..c7)

 


--控制操作

--if then elseif then else end

abc =10

ifabc ==10then

    print("v1")

elseif abc ==9then

    print("v2")

else

    print("v3")

end

 


--for

--从4(第一个参数)涨到10(第二个参数),每次增长以2(第三个参数)为单位

fori=4,10,2do

    print("for1:"..i+1)

end

--也可以不制定最后一个参数,默认1的增长速度

fori=4,10do

    print("for2:"..i+1)

end

 


tableFor ={"himi1","himi2","himi3","himi4","himi5"}

fork,v inpairs(tableFor)do

    print("for3:key:"..k.."value:"..v)

end

 


--while

w1=20

while truedo

    w1=w1+1

    ifw1==25then

        break

    end

end

print("whlile:"..w1)

 


--repeat

    aa =20

    repeataa =aa+2

        print("repeat:"..aa)

    until aa>28

 


--关系操作符

--需要注意的是不等于符号 ~=  而不是!=

ax =10

bx =20

 


ifax >bx then

    print("GX1")

elseif ax<bx then

    print("GX2")

elseif ax>=bx then

    print("GX3")

elseif ax<=bx then

    print("GX4")

elseif ax==bx then

    print("GX5")

elseif ax~=bx then

    print("GX6")

else

    print("GX7")

end



关于函数



--函数详解

 


--有一个返回值的函数

function funTestBackOne(aCount)

    localaCount=aCount+1

    returnaCount

end

 


a =20

print(funTestBackOne(a))

 


--有多个返回值的函数

function funTestBackMore()

    return2,3

end

 


a,b =funTestBackMore()

print(a.." and "..b)

 


--有变长参数的函数

function funTestUnKnow(... )

    print(...)

end

funTestUnKnow(a,b,"Himi")

 


--闭合函数(一个函数写在另外一个函数内)

function funTest1(... )

    locald =12;

    d=d+...

    function funTest2(... )

        print(d)

    end

    funTest2()

end

 


funTest1(100)


day1

--[[function fuc(n)
if n==0 then
return 1
else
return n*fuc(n-1)
end
endprint("input a number")
a = io.read("*number")
print(fuc(a))
--]]--替换字符串
--[[
a = "one thing"
b = string.gsub(a,"one","two")
print(a)
print(b)
--]]--转换数字
--[[
line = io.read()
n = tonumber(line)
if n==nil then
error(line.."is not a valid number")
else
print(n*2)
end
--]] 
--拼接字符串
--[[
print("10"+1)print("hell".."o")
--]]--转换
--[[
line = io.read()
n = tonumber(line)
print(n)print("我是一个字符串"..tostring(n))
print("10"=="10")
print(tostring(10)=="10")
--]]--#计算长度
--[[
a = "hello"
print(#a)
print(#"good\0byte")
]]----table的使用
--[[
a = {}
k = "x"
a[k] = 10
a[20] = "great"
print(a[k])
print(a[20])
k = 20
print(a[k])
a["x"] =a["x"]+1
print(a["x"])--使用同一个table
a = {}
a["x"] = 10
b = a --a和b使用了同一个table
print(b["x"])
b["x"] = 20
print(a["x"])
a = nil --b还在用table
b = nil --没人用table了--自动增长
a = {}
--创建1000个新条目
for i = 1,1000 do a[i] = i*2 end
print(a[9])
a["x"] = 10
print(a["x"])
print(a["y"])
a.x = 20
print(a["x"])
print(a.x)--循环存储值
a = {}
for i = 1,10
do a[i] = io.read() end--输入打印数组的值
for i = 1,#a do
print(a[i])
end
--输出最后一个值
print(a[#a])
a[#a] = nil --删除最后一个值
a[#a + 1] = v --将v添加到列表的末尾
--]]--[[
a = {}
a[1000] = 10
a[10000] = 11
print(table.maxn(a))a = {}
i = 10;j = "10";k = "+10"
a[i] = "one value"
a[j] = "another value"
a[k] = "yet another value"
print(a[i])
print(a[j])
print(a[k])
print(a[tonumber(j)])
print(a[tonumber(k)])
--]]--取小数点后面几位
--[[
x = math.pi
print(x%0.1)
print(x - x%0.01)local tolerance = 10
function isturnback(angle)
angle = angle%360
return (math.abs(angle-180)<tolerance)
end
print(isturnback(-180))
--]]--[[
a = 10
b = "10"
if tostring(a)~=b then print("不等")
else
print("相等")
end
--]]--[[
a = {}
a.x = 1
a.y = 2
b = {}
b.x = 1
b.y = 2
c = a --a 等于 c table只有两个变量引用同一个的时候才是相等的
if a==b then print("a==b")
else
print("a~=b")
end
--]]--[[
days = {"Sunday","Monday","Tuesday","Wednessday","Thursday","Friday","Saturday"}
print(days[1]) --这里注意不是从0开始--a={x = 10,y = 20} <=>a = {};a.x = 10;a.y = 20
w = {x = 0,y = 0, label = "console"}
x = {math.sin(0),math.sin(1),math.sin(2)}
w[1] = "anther field"
x.f = w
print(w["x"])
print(w[1])
print(x.f[1])
w.x = nil
--]]--[[
list = nil
for line in io.lines() do
list = {next = list,value = line}
endlocal l = list
while l do
print(l.value)
l = l.next
end
--]]--error("inva operation")
--相当于do while
--[[
repeat
line = io.read()
until line ~=""
print(line)for i = 1,math.huge do --math.huge 无限大
print(1)
end
--]] 
--[[
days = {"Sunday","Monday","Tuesday","Wednessday","Thursday","Friday","Saturday"}revDays = {["Sunday"] = 1,["Monday"] = 2,["Tuesday"] = 3,["Wednessday"] = 4,["Thursday"] = 5,["Friday"] = 6,["Saturday"] = 7}
x = "Tuesday"
--print(revDays[x])table.sort(revDays)
revDays1 = {}
for k,v in pairs(revDays) do --给v赋值“Sunday","Monday"... k赋值1,2...
print(k)
print(v)
end--数组排序
a = {1,3,2}
table.sort(a)
for i,v in pairs(a) do print(v) end--]]
--print("Monday是第"..revDays1["Monday"].."天")
--[[
for key,value in ipairs(revDays1) do
print(revDays1[key])
end
--]]--[[
a = {}
a[1] = 10
a[2] = 20
a[3] = 30
for i,v in pairs(a) do print(v) end
--]]

day2

--函数
--数组求和

--[[
function sum(a)
local sum = 0
for i,v in pairs(a) do
sum = sum + v
end
return sum
enda = {1,2,3,4,5,6}
num = sum(a)
print(num)s,e = string.find("hello lua","lua")
print(s,e) --返回函数的开始结束字符,从1开始--]]
--返回多个返回值
--[[
function maximum(a)
local mi = 1
local m = a[mi]
for i,val in pairs(a) do
if val> m then
mi = i;m = val
end
end
return m,mi
end
--]]--[[
function maxmum(a)
local num = 1
local val = a[num]
for i,value in pairs(a) do
if value>val then
num = i
val = value
end
end
return val,num
endprint(maxmum({8,10,23,12,5}))
--]]t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "(%w+)=(%w+)") do
t[k]=v
end
for k, v in pairs(t) do
print(k,v)
end 
print({if not package.loaded["111"] then print("nil") end}

day3

 

--面向对象

People = {} --定义一个p表
function clone(tab)
local t = {}
for key,value in pairs(tab) do
t[key] = value
end
return t
end--[[
function People.sayhi()
print("Hello World")
end--]]--[[People.sayhi = function()
print("Hello People ")
end--]]function People.new(name)
local self = clone(People)
self.name = name
return self
endPeople.sayhi = function(self)
print("Hello People "..self.name)
end--[[q = clone(People)
q.sayhi()--]]local k = People.new("丁小未")
k.sayhi(k)
k:sayhi(k)
--k.sayhi() 
--继承
function copy(dist,tab)
for key,value in pairs(tab) do
dist[key] = value
end
endMan = {}
Man.new = function(name)
local self = People.new(name)
copy(self,Man)
return self
endMan.sayHello = function()
print("Man say hello")
endMan.sayhi = function(self)
print("hi "..self.name)
endlocal m= Man.new("人")
m.sayhi(m)
m:sayHello()
--m:sayhi(m) 
 
 
lua不支持函数重载
 
--可变参数
function show(...)
local num = select('#',...)
if num>0 then
print("恩")
else
print("无")
end
endshow()
 
function clone(tab)
local t = {}
for key,value in pairs(tab) do
t[key] = value
end
return t
end--[[
function People.sayhi()
print("Hello World")
end--]] 
function People.new(name)
local self = clone(People)
self.name = name
return self
endPeople.sayhi = function(self)
print("Hello People "..self.name)
end 
local k = People.new("丁小未")
k.sayhi(k) 
 
--原表
local tbA = {a = 1}
local tbB = {b = 2}
tbA.y = function(tb, k) --必须要有返回值
print("__index key:" .. k)
if k == 'a' then
return 10
end
return nil
end
--[[
local mt = {__index = tbA,
__newindex = function(t, k, v)
end
}local mt = {__index = function(tb, k)   --这个元方法用于读取值
print("__index key:" .. k)
if k == 'a' then
return 10
end
return nil
end,
__newindex = function(tb, k, v)  --这个是用于设置值
print("__newindex key:" .. k)
end
}
]]
setmetatable(tbB, tbA)
tbB.a = 3
print(tbB.a)
--tbB.d = 3
--tbB.b = 5
--print(tbB.d)

标签:function,10,end,..,lua,--,Lua,初识,print
From: https://blog.51cto.com/dingxiaowei/6254921

相关文章

  • 初识数据库
    楔子假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住十一期间全国的购票需求,你怎么写?由于在同一时段抢票的人数太多,所以你的程序不可能写在一台机器上,应该是多台机器一起分担用户的购票请求。那么问题就来了,票务信息的数据存在哪里......
  • Exploring the Use of Humanized Mouse Models in Drug Safety Evaluation
    Thepurposeofdrugdevelopmentistofindnewsafe,effectivedrugsofhighqualityandstabilitytocurediseasesandsavelives.Developinganewdrugisaverycomplexprocess,butitcanbedividedinto preclinicalresearch andclinicalstudiesofa......
  • 初识 Dart 语言
     初识Dart语言_晚香玉_关注IP属地:湖南0.2132020.07.1614:04:40字数3,668阅读599(原创)很多人都玩过“找别扭”这款游戏,下面大家一起来看看Dart有何与众不同。在讨论Dart之前,还是按照惯例,先做一个“计划”,需要了解的东西划分一下重点,然后再一个个看。划分......
  • 初识常见关键字
     typedef:类型定义(类型重定义)简单来说就是重命名就是如何把常语句简单化,只需在函数前给上一个typedefunsignedintu_int;就可以直接把这个类型重新起了个新名字u_int,这个简写就和原本的是一样的意思 static:静态的(有3种用法)1.static修饰局部变量,改变了局部变量的生命周期(......
  • 【Redis】-使用Lua脚本解决多线程下的超卖问题以及为什么?
    一.多线程下引起的超卖问题呈现1.1.我先初始化库存数量为1、订单数量为01.2.开启3个线程去执行业务业务为:判断如果说库存数量大于0,则库存减1,订单数量加1结果为:库存为-2,订单数量为3原因:如下图所示,这是因为分别有6个指令(3个库存减1指令,3个订单数量加1指令)在redis服务端执行导致......
  • 初识操作符
    操作符:算数操作符:+-*/%  c语言中除法是等到的结果是“商”,从根上讲除号两端都是整形,得出来的结果都是整数除号两端其中一个是小数,就是执行小数除法所以在写代码中想要执行小数除法必须两端需要有一个数是小数,得出来的数才是小数  在c语言中%是取模(余),所以这里......
  • IntelliJ idea evaluate expression
    IntelliJideaevaluateexpressionhttps://www.cnblogs.com/mrmoo/p/9942605.html  ......
  • flask-login 初识
    一、在简单应用中的配置示例1.在初始化application时注册一个LoginManager实例对象fromflask_loginimportLoginManagerlogin_manager=LoginManager()defcreate_app(config_type='default'):config_class=config[config_type]app=Flask(__name__)......
  • 初识数组
    数组:一组相同类型的元素的集合 arr是数组名字,在数组里面存放10个数,如大括号里的没有设定的数多时,剩下的数都默认为0数组使用下标来访问的在数组开辟了一个空间,里面存放了这10个元素,这个数组的名字叫arr,而每个元素都有一个下标,但语法规定第一个元素下标都是为0,当你想访问每个......
  • lua
    Skywalking监控nginx的方法https://blog.csdn.net/qq_31725371/article/details/85226116https://www.jianshu.com/p/30684f94d5e0过程安装必备软件:yuminstall-ygccgcc-c++makepcre-develzlib-developenssl-devel现在必备软件:https://luajit.org/download/Lua......