Lua 的 学习 值类型传递、引用类型传递、闭包、尾调用、迭代器(链)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Lua 的 学习 值类型传递、引用类型传递、闭包、尾调用、迭代器(链),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2129字,纯文字阅读大概需要4分钟。
内容图文
-------------------- 值类型传递
--[[
a=10;
b=20;
function math(x,y)
x=20;
y=30;
return x+y;
end
foo= math;
print(foo(a,b));
print(a);
print(b);
--]]
-------------------- 值类型传递
--[[
tab={
a=10;
b=20;
}
function math(x,y)
x=20;
y=30;
return x+y;
end
foo= math;
print(foo(tab.a,tab.b));
print(tab.a);
print(tab.b);
--]]
-------------------- 值类型传递
--[[
a="10";
b="20";
function math(x,y)
x="20";
y="30";
return x+y;
end
foo= math;
print(foo(a,b));
print(a);
print(b);
--]]
-------------------- 值类型传递
--[[
tab={
a="10d";
b="20w";
}
function math(x,y)
x="20dd";
y="30ww";
return x..y;
end
foo= math;
print(foo(tab.a,tab.b));
print(tab.a);
print(tab.b);
--]]
-------------------- 引用类型传递
--[[
tab={
a=10;
b=20;
}
function math(tab)
tab.a=20;
tab.b=30;
return tab.a..tab.b;
end
foo= math;
print(foo(tab));
print(tab.a);
print(tab.b);
--]]
-------------------- 闭包
--[[
function func(x,y)
local i =0;
return function()
i=i+1;
return x..y..i
end
end
print("-----闭包-----")
fun= func(1,2);--这里的fun 返回的是 func(x,y) 这个函数
print(fun()) --这里的fun() 返回的是 func(x,y) 里面的 匿名 function() 这个函数
print(fun())
print(fun())
print(fun())
print("-----非闭包-----")
print(func(1,2)());
print(func(1,2)());
print(func(1,2)());
print(func(1,2)());
--]]
-------------------- 尾调用
--[[
function func(n)
if n <= 0 then
print("---");
return 0;
end
local a = func(n-1)
print(a);
return n * a;
end
func(10000000000000);
--]]
--[[
function func(n, now)
if n <= 0 then
print("---");
return now
end
print("---");
return func(n-1, now*n)
end
func(10000000000, 1)
--]]
-------------------- 迭代器(链)
--[[
function travel(list)
local function work(list,node)
if not node then
return list;
else
return node.next;--这里的对象将返回给 迭代器的 变量列表,同时也会成为迭代函数的 状态变量 参数。
end
end
return work,list,nil;--这里返回的是 迭代函数,状态变量,控制变量
end
lists = nil
lists={index=1,next=lists};
lists={index=2,next=lists};
lists={index=3,next=lists};
for i=4,8 do
lists={index=i,next=lists};
end
for node in travel(lists) do --这里的 travel(lists) 不是迭代函数,而是一个普通函数,但是这个普通函数 的返回值 为三个 对象. 这三个对象 才是迭代器所需要的的 迭代函数,状态变量,控制变量
print(node.index);
end
--]]
原文:https://www.cnblogs.com/xulang/p/12504773.html
内容总结
以上是互联网集市为您收集整理的Lua 的 学习 值类型传递、引用类型传递、闭包、尾调用、迭代器(链)全部内容,希望文章能够帮你解决Lua 的 学习 值类型传递、引用类型传递、闭包、尾调用、迭代器(链)所遇到的程序开发问题。
如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
来源:【匿名】