函数式编程-Lua语言:如何使用类似于python列表理解的东西



我是Lua的新手,我想知道是否有一些紧凑的方法可以像在Python中那样在Lua中定义listmetatable

lis = [i for i in set if i>0]

任何例子都将不胜感激。

Lua没有本地列表

然而,正如@joachim所指出的,你可以使用一些技巧来实现它。

local comp = require 'comprehension' . new()
comp 'table(v,k for k,v in pairs(_1))' {[3]=5, [5]=7} 

它将产生:

{[5]=3, [7]=5}

请注意,comprehension在普通的5.2.xLua中不起作用。它需要Penlight Lua库:http://stevedonovan.github.com/Penlight/api/index.html

您也可以使用MetaLua或LuaMacros

最新更新