嗯,我的另一半其实在小破站开通了视频
所以我一直没去发帖子
这里重新写一下帖子,来为他拉一点粉丝
今天讲16课
函数是第一类值!!
看着很高大上
我用几个例子说明
①自己动手实践哦
a={p=print}
a.p("hello lua")
--这里p是a表的一个名与键用法类似,但要区分
②接着用例子①a表延伸
print=math.sin
a.p(print(1))
③反转过来
math.sin=a.p
math.sin(10,20)
第一类值(看理论,看不懂跳过)
意味着lua语言中的函数与其他常见类型的值(例如数值与字符串)具有同等权限
一个程序可以将某个函数保存到变量中(全局或者局部变量)或表中,也可以将某个函数作为参数传递给其他函数,还可以将某个函数作为其他函数的返回值返回
如果函数也是值的话,是可以创建函数的表达式的
举个常见的例子
function aaa(x) return 2*x end
--这个是个语法糖,让你方便理解的
以上等价于
aaa=function(x) return 2*x end
而像这种function(x) body end就是函数构造器,跟表{}构造器相似,你也可以理解为
函数定义实际上就是创建类型为"function"的值,把它赋值给一个变量的语句
注意!!!
所有函数是匿名的,像其他所有值一样,函数没名字。
在讨论函数时,像初学的print,实际指的是保存该函数的变量
我们通常把函数给全局变量,看似给函数起了个名字
很多场景下函数仍然会保持匿名性
举个例子
new = {
{name="lua", IP = "210.26.23.12"},
{name="arraial", IP = "210.26.30.23"},
{name="grauna", IP = "210.26.30.34"},
{name="derain", IP = "210.26.23.20"},
}
table.sort(new,function(a,b)
return(a.name > b.name) end)
表函数sort第一个参数是一个表(例子中的new)
第二个参数则是进行各种排序(例子中的是一个按name字母顺序)
sort并没试图穷尽所有排序,所以提供了可选的一个参数
好了,不懂去小破站视频下面问我
你直接去搜lua第二课闭包,应该可以搜到
我只是拉点流量 |