Lua语言:如何使用类似于python列表推导的东西

Ubu*_*lva 7 lua functional-programming list

我是新来的Lua如果有定义一些紧凑的方式我想知道list,一个metatable在Lua,因为我们在Python做:

lis = [i for i in set if i>0]
Run Code Online (Sandbox Code Playgroud)

任何一个例子将不胜感激.

ppa*_*ojr 2

Lua 没有本地列表

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

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

它将产生:

{[5]=3, [7]=5}
Run Code Online (Sandbox Code Playgroud)

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

您还可以使用MetaLuaLuaMacros

  • 基本上没有_native_方法可以做到这一点? (2认同)