2013-02-03 9 views
5

ich Lua bin neu und ich habe mich gefragt, ob es eine kompakte Art und Weise ist ein list, ein metatable in Lua zu definieren, wie wir in Python zu tun:Lua Sprache: Wie so etwas wie Python-Liste verwenden Comprehensions

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

Jedes Beispiel würde sehr geschätzt werden.

+2

Die einzige ähnliche Sache, die ich gesehen habe, ist [dies mit Code-Generierung] verwenden (http://lua-users.org/wiki/ListComprehensions) . –

+1

obwohl die lua stdlib bietet einige funktionale Programmierung Dienstprogramm, [Filter] (https://github.com/rthomas/lua-stdlib/blob/origin/src/base.lua) ist das tut dies –

Antwort

2

Lua keine eigene Liste

jedoch als @joachim wies darauf hin, das sind einige Hacks Sie es erreichen können.

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

Es ergäbe:

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

Beachten Sie, dass comprehension nicht im Klar 5.2.x Lua funktioniert. Es erfordert Penlight Lua-Bibliotheken: http://stevedonovan.github.com/Penlight/api/index.html

Sie auch MetaLua oder LuaMacros

+1

Grundsätzlich gibt es keine _native_ Weg, es zu tun? –

+2

@UbuntuSilva Nein –

+0

Das stimmt. Lua hat kein eigenes Listenverständnis – ppaulojr

Verwandte Themen