function testfun(tab, fun) for k, v in pairs(tab) do print(fun(k, v)) end end tab = {key1 = "val1", key2 = "val2"}; testfun(tab, function(key, val) return key .. "=" .. val; end );
(学习网站说明:function 可以以匿名函数(anonymous function)的方式通过参数传递)
这里可能有点不好理解。
首先,定义了一个testfun函数,函数有两个参数。
然后就是,匿名函数;在调用testfun函数是,第二个参数是个匿名函数。
function(key, val) return key .. "=" .. val; end
1.这个函数没有名称;
2.匿名函数的参数:key和val并没有定义;
3.匿名函数有自己的函数体:执行语句;
4.上面的匿名函数的返回值是提供给testfun里的print调用。
如上代码段,在对tab(表)数据进行输出时使用for循环语句,不需要事先定义k,v。