前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >lua记录

lua记录

作者头像
IT云清
发布2022-06-12 17:19:11
7460
发布2022-06-12 17:19:11
举报
文章被收录于专栏:IT云清
代码语言:javascript
复制
-- https://github.com/aerospike/aerospike-lua-core/blob/master/src/as.lua
-- https://github.com/aerospike/aerospike-client-java
-- Create a new Map my merging two maps.
-- The function `f` is a function used to merge the value of matching keys.
--
function map.merge(m1,m2,f)
	local mm = {}
	for k,v in map.pairs(m1) do
		mm[k] = v
	end
	for k,v in map.pairs(m2) do
		mm[k] = (mm[k] and f and type(f) == 'function' and f(m1[k],m2[k])) or v
	end
	return map(mm, map.size(m1) + map.size(m2))
end

-- 一个合并table的函数
function table.merge(src,des)
	for k,v in pairs(src) do
		des[k] = v
	end
	return des
end

t1 = {a=1,b=2,c=3}
t2 = {a=22,b=55,f=12,g=12}

-- 遍历table
for k,v in pairs(table.merge(t1,t2)) do
	print(k.."="..v)
end

结果为:
a=1
c=3
b=2
g=12
f=12
-- ------------
-- 函数传递
myPrint = function(param)
	print("打印函数:",param)
end
myPrint(22)

function add(num1,num2,printFunction)
	result = num1 + num2
	printFunction(result)
end
add(22,77,myPrint)


-- add函数传入来一个打印函数,名字可以不一样
function add(a,b,myPrint1)
	local c = a + b
	myPrint1(c)
end
-- 定义一个打印函数
function myPrint(param)
	print('结果为='..param)
end

add(11,22,myPrint)


print("-----------")
-- 函数返回多个值
function maxNum(a)
	local mi = 1
	local m = a[mi]
	for i,v in pairs(a) do
		if v > m then
			mi = i
			m = v
		end
	end
	return m,mi
end
print(maxNum({8,10,23,12,5}))
print("-----------")
-- if elseif
c = 200
if(c == 10)
then 
	print("c==10")
elseif (c==20) 
then
	print("c==20")
elseif (c==30)
then 
	print("c==40")
else 
	print("不认识")
end
print("-----------")
-- goto

for i=1,3 do
	if i <= 2 then
		print(i,"yes,continue")
		goto label2
	end
	::label2:: print("在goto里")
	print(i,"结束了内层")
end
-- break
print("-----------")
a = 10
while(a<20) 
do
	print(a)
	a = a+1
	if (a > 15)
	then 
		 break;
	end
end
-- 范型for循环
tab2 = {"one",2,"three",4}
for i,v in ipairs(tab2) do
	print(i,v)
end
for i,v in pairs(tab2) do -- pair和ipair
	print(i,v)
end
for i,v in pairs(tab2) do
	print(v)
end
print("-----------")
-- 数值for循环
function f(x)
	print(x)
	return 2*x
end
for i = 1,f(3) do -- 默认步长是1,f(x)只会计算一遍
	print(i)
end
print("-----------")
for i = 1,f(3),2 do -- 指定步长是2
	print(i)
end

print("-----------")
a=3
while(a ~= 0) 
do
	 print("a="..a)
	 a = a -1
end
print("-----------")
-- 本地变量和全局变量
a=14;
function test1()
	a = 18
	print("内部a="..a)
	local b = 22
end	
test1()
print("外部a="..a)
print(b)
print("-----------")
-- 赋值
a,b,c = 11,22,"good"
print(a)
print(b)
print(c)
a,b,c = c,b,a --交换变量
print(a)
print(b)
print(c)

-- boolean 类型只有两个可选值:true(真) 和 false(假),
-- Lua 把 false 和 nil 看作是 false,其他的都为 true,数字 0 也是 true:
-- type
print(type(x))
print(type(x)==nil)
print(type(x)=="nil")
print(type(type(x))) -- type(x)的结果是个字符串的nil
-- table使用
tab1= {key1="val1",key2="val2","val3"}
for k,v in pairs(tab1) do
	print ("k="..k..",v="..v)
end -- ???
print("-----------")
tab2 = { name="zhangsan",age=12}
for k,v in pairs(tab2) do
	print ("k="..k..",v="..v)
end
print("-----------")
tab2.name=nil -- 相当于删除name
for k,v in pairs(tab2) do
	print ("k="..k..",v="..v)
end
print("-----------")

-- 基础
print(b);
b=123;
print(b);
print(type(b));
b="23343";
print(b);
print(type(b));
-- aaa
-- [[fff --]]
b=nil;
print(b);
print(type(b));
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档